【发布时间】:2016-08-04 20:13:45
【问题描述】:
我有两个列数相同但行数不同的数据框:
colA colB colC colD
xxx 303 200 A
yyy 111 20 B
zzz 24 188 C
我需要将colA 从df1 匹配到colA 从df2 并只选择df1$colB - df2$colC <= 2000 所在的行
我尝试执行 for 循环,但没有成功:
for (i in nrow(df1)) {
for (j in nrow(df2)) {
df3 <- subset(merge(df2[j,], df1[i,], by="row.names", all=T), df2$colA[j] == df1$colA[i] && (df1$colB[i] - df2$colC[j]) <= abs(2000))
}
}
我做错了什么?它没有给我任何错误,但新的数据框是空的。
【问题讨论】:
-
描述中可能类似于
dfNew <- merge(df1, df2[c("colA", "colC"), by="colA"]); dfNew <- dfNew[(dfNew$colB - dfNew$colC) <= 2000, ]。 -
那行得通。谢谢!