我有一个这样的数据框:
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
对于&#39;群集&#39;如果某个客户端在同一日期属于不同的集群,它将是一个列表。
我以为我可以用dplyr包来做,如下所示:
library(dplyr)
ideal_df<-sample %>%
group_by(client, date) %>%
summarize( #some anonymous function)
但是,在这种情况下,我不知道如何编写匿名函数。有没有办法将数据转换为理想格式?
答案 0 :(得分:12)
我们可以使用toString
在'客户'分组后将'{1}}元素连接在一起“
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