我已经搜索了很多关于如何在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>})
看起来并不复杂,但我没有找到一个很好的方法来做到这一点。我已经挣扎了两天而没有任何成就。
我希望我在这里说清楚。谢谢!
答案 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