【问题标题】:For each observation in one data frame, count number of observations in a second data frame对于一个数据帧中的每个观察,计算第二个数据帧中的观察数
【发布时间】:2017-03-09 13:37:15
【问题描述】:

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

例如:

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|

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

【问题讨论】:

    标签: r count conditional


    【解决方案1】:

    我们可以遍历'DF1'的'Value',得到它的绝对差的sum将是'DF2'的'Value'小于或等于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
    

    【讨论】:

    • 谢谢!这似乎得到了我所需要的。
    • 对于那些想要检查的人,我添加输入代码:observation = c(1:5) Value = c(3,5,8,10,1) DF1 = data.frame(observation ,Value) 观察 = c(1:5) 值 = c(8,9,2,1,3) DF2 = data.frame(observation,Value)
    猜你喜欢
    • 1970-01-01
    • 2018-01-09
    • 1970-01-01
    • 1970-01-01
    • 2021-02-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多