首页 > 解决方案 > 展开 data.frame

问题描述

我有data.frame几个numeric值列和一个字符id列:

df <- data.frame(x=c(1,2,2,3,4,5),y=c(11,12,12,13,14,15),id=c("a","b","c","d","e","f"))

我只想df将唯一的行 WRT 保留到值列,并用逗号折叠冗余的对应ids,所以我正在这样做:

library(dplyr)
collapsed.df <- df %>% dplyr::group_by_(.dots=colnames(df)[-3]) %>% dplyr::summarise(id=toString(id)) %>% data.frame()

我的问题是如何展开,collapsed.df以便以逗号分隔的每个都collapsed.df$id被拆分,并且由此产生的膨胀data.frame具有与 WRT 相同的id顺序df

标签: rdplyrcollapsetidyr

解决方案


您可以使用tidyr::separate_rows

collapsed.df %>% separate_rows(id)

#  x  y id
#1 1 11  a
#2 2 12  b
#3 2 12  c
#4 3 13  d
#5 4 14  e
#6 5 15  f

推荐阅读