对于一个数据框中的每个观察值,计算第二个数据框中的观察值数量

For each observation in one data frame, count number of observations in a second data frame

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

例如:

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

我们可以遍历 'DF1' 的 'Value',得到 sum 的绝对差值就是 'Value' 和 'DF2'小于或等于 2

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

或者outer,我们从数据集中获取'Value'列的每个组合的差异,检查绝对值是否小于等于2并找到rowSums

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