对于一个数据帧中的每个观察,计算第二个数据帧中的观测数

时间:2017-03-09 13:37:15

标签: r count conditional

我有两个数据框。我希望运行第一个观察结果的所有观察结果,并添加一个列,指示第二个数据框中符合特定条件的观察数量。

例如:

DF1                               
observation Value              
1            3
2            5
3            8
4            10
5            1

DF2                               
observation Value              
1            8
2            9
3            2
4            1
5            3

我想为DF1创建第三列,指示DF2中具有(例如)最大或小于2(| Value2 - Value1 |< = 2)的值的观察数。因此,我的结果将是这种情况:

DF1                               
observation Value  Count              
1            3       3
2            5       1
3            8       2
4            10      2
5            1       3

1 个答案:

答案 0 :(得分:1)

我们可以循环'DF1'的'值',得到sum的绝对差值,它将是来自'DF2'的'值'小于或等于2

DF1$Count <- sapply(DF1$Value, function(x) sum(abs(x-DF2$Value) <=2))

或者使用outer,我们得到数据集中“值”列的每个组合的差异,检查绝对值是否小于或等于2并找到rowSums

DF1$Count <- rowSums(abs(outer(DF1$Value, DF2$Value, `-`))<=2)
DF1$Count
#[1] 3 1 2 2 3
相关问题