gpt4 book ai didi

r - 按列分组并将一列汇总为列表

转载 作者:行者123 更新时间:2023-12-04 03:19:39 25 4
gpt4 key购买 nike

我有一个这样的数据框:

sample_df<-data.frame(
client=c('John', 'John','Mary','Mary'),
date=c('2016-07-13','2016-07-13','2016-07-13','2016-07-13'),
cluster=c('A','B','A','A'))

#sample data frame
client date cluster
1 John 2016-07-13 A
2 John 2016-07-13 B
3 Mary 2016-07-13 A
4 Mary 2016-07-13 A

我想将其转换为不同的格式,如下所示:
#ideal data frame
client date cluster
1 John 2016-07-13 c('A,'B')
2 Mary 2016-07-13 A

对于“集群”列,如果某个客户端在同一日期属于不同的集群,它将是一个列表。

我想我可以用 dplyr 包来做,并推荐如下
library(dplyr)
ideal_df<-sample %>%
group_by(client, date) %>%
summarize( #some anonymous function)

但是,我不知道在这种情况下如何编写匿名函数。有没有办法将数据转换成理想的格式?

最佳答案

我们可以使用 toString连接 unique按“客户端”分组后,“集群”中的元素放在一起

r1 <- sample_df %>% 
group_by(client, date) %>%
summarise(cluster = toString(unique(cluster)))

或者另一种选择是创建一个 list柱子
r2 <- sample_df %>%
group_by(client, date) %>%
summarise(cluster = list(unique(cluster)))

我们可以 unnest
library(tidyr)
r2 %>%
ungroup %>%
unnest()

关于r - 按列分组并将一列汇总为列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38348074/

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