汇总数据框以包括分组中的所有唯一值

时间:2016-01-06 20:54:23

标签: r dataframe dplyr

我想总结一个数据框,以便列包含特定组中唯一值的字符串。所以使用虹膜数据集:

iris %>%
  group_by(Species) %>%
  summarise(mPW=mean(Petal.Width))

这给出了按物种分组的Petal.Width的平均值。但是,如果我想将所有用于计算该值的值作为输出,那该怎么办呢?我希望列表中的这些唯一值虽然不在列表的R含义中。我试过了,但显然这是错的:

 iris %>%
   group_by(Species) %>%
   summarise(lPW=paste(Petal.Width, sep=","))

这是截断的所需示例数据帧输出。请注意,LPW的所需输出是一个字符对象:

 Species lPW
 setosa  0.1,0.2,0.3,0.4,0.5,0.6
 ....

我没有设置dplyr解决方案。这就是我正常工作的方式。

提前致谢。

2 个答案:

答案 0 :(得分:6)

将我的评论提升为答案:使用collapse代替sep

iris %>%
  group_by(Species) %>%
  summarise(lPW = paste(Petal.Width, collapse=","))

如果要将此限制为仅限唯一值,可以使用:

iris %>%
  group_by(Species) %>%
  summarize(lPW = paste(unique(Petal.Width), collapse = ","))

答案 1 :(得分:1)

# dplyr_0.4.3
iris %>%
select(Species, Petal.Width) %>%
mutate(Petal.Width = as.character(Petal.Width)) %>%
unique() %>%
group_by(Species) %>%
summarize(lPW = paste(as.character(Petal.Width), collapse = ","))