gpt4 book ai didi

r - 在 R 中创建一个包含出现次数的列

转载 作者:行者123 更新时间:2023-12-04 06:54:26 26 4
gpt4 key购买 nike

这个问题在这里已经有了答案:





Add count of unique / distinct values by group to the original data

(3 个回答)


5年前关闭。




我正在尝试向现有数据框添加一列,以便该列定义每个用户购买的不同产品的数量。一个玩具的例子是

Customer    Product
1 Chocolate
1 Candy
1 Soda
2 Chocolate
2 Chocolate
2 Chocolate
3 Insulin
3 Candy

输出应该在哪里
Customer    Product     #Products
1 Chocolate 3
1 Candy 3
1 Soda 3
2 Chocolate 1
2 Chocolate 1
2 Chocolate 1
3 Insulin 2
3 Candy 2

我想在没有 for 循环的情况下执行此操作,因为我有数百万行,并且需要很长时间。我已经使用 data.table 和其他方法来获取每个客户的产品数量,但我不知道如何轻松地将其作为一列添加到现有数据框中。

提前致谢!

最佳答案

在基础 R 中,我建议 ave :

within(mydf, {
count = ave(Product, Customer, FUN = function(x) length(unique(x)))
})
## Customer Product count
## 1 1 Chocolate 3
## 2 1 Candy 3
## 3 1 Soda 3
## 4 2 Chocolate 1
## 5 2 Chocolate 1
## 6 2 Chocolate 1
## 7 3 Insulin 2
## 8 3 Candy 2

您也可以尝试“data.table”包:
library(data.table)
as.data.table(mydf)[, count := length(unique(Product)), by = Customer][]
## Customer Product count
## 1: 1 Chocolate 3
## 2: 1 Candy 3
## 3: 1 Soda 3
## 4: 2 Chocolate 1
## 5: 2 Chocolate 1
## 6: 2 Chocolate 1
## 7: 3 Insulin 2
## 8: 3 Candy 2

关于r - 在 R 中创建一个包含出现次数的列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30592041/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com