我在 R 中有两个数据框,如下所示......我需要在 df1 中添加新列(count_orders),其中包含 df2 中的订单数(或 df2 中的买家数)。
请帮忙。
> df1
buyer city
1 A xx
2 B yy
3 C zz
> df2
order buyer item
1 1 A 1
2 2 A 2
3 3 B 1
4 4 A 2
5 5 B 1
6 6 C 3
7 7 C 4
预期输出:
> df1
buyer city count_orders
1 A xx 3
2 B yy 2
3 C zz 2
最佳答案
这是一个可能的 data.table
在 df1
之间执行二进制连接的解决方案和 df2
在使用 by = .EACHI
加入时计算长度时
library(data.table)
setkey(setDT(df2), buyer)
df2[df1, list(city, count_orders = .N), by = .EACHI]
# buyer city count_orders
# 1: A xx 3
# 2: B yy 2
# 3: C zz 2
替代方法(修改@nicolas 评论)可能是(将通过引用更新
df1
)library(data.table)
setkey(setDT(df1), buyer)
df1[setDT(df2)[, .N, keyby = buyer], count_orders := i.N]
关于r 在 df1 中添加列,在 df2 中添加行数(有条件),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30555977/