如何解决按发生次数动态地进行pivot_wider
很抱歉,标题不是很描述。我有这样的数据:
我想做的是遍历Product
并计算它们拥有的每种Client
的出现次数,以便动态添加“最常使用的客户”,“第二最常使用的客户”列客户”等。
如果我们将Product
和Client
分组并计数,我们将看到每个Client
中每个Product
的出现:
从这里开始,我的目标是要达到以下目的:
所以A的“第一客户”是C1,B的是C2,依此类推。同样,事情应该是动态的,因为我事先不知道有多少“ nX_Client” 列将是。
打破联系(对于Product
C,有2个Client
,每个出现1次)可以按字母顺序或根据需要随意进行。这对我的用例来说并不重要。
reprex :
ID <- c(1,2,3,4,5,6,7,8,9,10)
Size <- c(1,1,2)
Product <- c("A","A","B","C","C")
Client <- c("C0","C0","C1","C2","C1")
df <- data.frame( ID,Size,Product,Client )
df <- df %>%
group_by(Product,Client) %>%
summarise(count = n())
最诚挚的问候。
解决方法
您可以为每个count
和Product
Client
行数并对其进行排序。根据每个Product
的频率创建一个列名,然后以较宽的格式投射数据。
library(dplyr)
df %>%
count(Product,Client,sort = TRUE) %>%
group_by(Product) %>%
mutate(n = sprintf('n%d_client',row_number())) %>%
tidyr::pivot_wider(names_from = n,values_from = Client)
# Product n1_client n2_client
# <chr> <chr> <chr>
#1 A C1 C0
#2 B C2 C1
#3 C C0 C1
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。