我有两个数据框。我希望运行第一个观察结果的所有观察结果,并添加一个列,指示第二个数据框中符合特定条件的观察数量。
例如:
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
答案 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