R - 对多行数据帧执行CountIF

时间:2018-01-25 16:28:00

标签: r countif

我已经搜索了很多关于如何在R中执行CountIF的示例,但是我仍然没有找到我想要的解决方案。

我基本上有2个数据帧:

count if df1$customer_id = df2$customer_id AND df1$date_of_export <= df2$date_of_delivery

我需要为df1中的每个customer_id计算出口日期后他们获得了多少次送货。所以,我需要customer_id | date_of_export 1 | 2018-01-12 2 | 2018-01-12 3 | 2018-01-12 customer_id | date_of_delivery 1 | 2018-01-10 1 | 2018-01-17 2 | 2018-01-13 2 | 2018-01-20 3 | 2018-01-04

要更好地理解:

customer_id | date_of_export | deliveries_after_export
1 | 2018-01-12 | 1 (one delivery after the export date)    
2 | 2018-01-12 | 2 (two deliveries after the export date)
3 | 2018-01-12 | 0 (no delivery after the export date)

我的输出应该是:

 this.state.allValues.map((value) => {
    return <button key={value} class="dropdown-item" type="button" onClick={this.onClick}>{value}</button>})  

看起来并不复杂,但我没有找到一个很好的方法来做到这一点。我已经挣扎了两天而没有任何成就。

我希望我在这里说清楚。谢谢!

1 个答案:

答案 0 :(得分:1)

我建议将两个data.frames合并在一起,然后它就是一个简单的sum()

library(data.table)
df3 <- merge(df1, df2)
setDT(df3)[, .(deliveries_after_export = sum(date_of_delivery > date_of_export)), by = .(customer_id, date_of_export)]

#   customer_id date_of_export deliveries_after_export
#1:           1     2018-01-12                       1
#2:           2     2018-01-12                       2
#3:           3     2018-01-12                       0