展开 data.frame

Uncollapsing a 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 具有与 [=15= 相同的 WRT 顺序] 作为 df?

您可以使用 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