【发布时间】:2017-01-26 08:55:57
【问题描述】:
我想比较 R 中具有相同列名(df1 和 df2)的两个数据框。根据其中一列(df2)中每一列的值,我想过滤另一列(df1)。对于每个列名,我需要消除 df1 中大于或等于 df2 中的值的行。也就是说,需要在下面产生res1:
df1 <- data.frame( v1 = c(1,2,3,4), v2 = c(2, 10, 5, 11), v3=c(20, 25, 23, 2), v4=c(1,2,1,3) )
> df1
v1 v2 v3 v4
1 1 2 20 1
2 2 10 25 2
3 3 5 23 1
4 4 11 2 3
df2 <- data.frame(v1 = 4, v2 = 10, v3 =30, v4 = 3)
> df2
v1 v2 v3 v4
1 4 10 30 3
因此,通过根据列名将 df1 中的每一行与 df2 进行比较,并消除 df1 中大于或等于 df2 中定义的特定列阈值的行,从而生成所需的输出 res1:
> res1
v1 v2 v3 v4
1 1 2 20 1
2 3 5 23 1
【问题讨论】:
-
df2永远是一行数据框?如果它有多行怎么办?我们应该将它与每一行进行比较吗? -
@RonakShah 它始终是一行数据帧。在 df2 中,我为删除 df1 中的行定义了阈值。
标签: r dataframe filter compare