plyr 中的 rbind 值

rbind values in plyr

我有一个包含 2 列的 table,我想将相同因子水平的值组合在一行中,例如,我在这里做了一个简化版本,

> df <- data.frame(x = rep(c('A', 'B', 'C'), 2), y = 1:6)
x y
A 1
B 2
C 3
A 4
B 5
C 6

我希望它是:

x  y
A  1, 4
B  2, 5
C  3, 6

所以我尝试了 plyr:

> library(plyr)
> d <- ddply(df, .(x), summarise, y = c(rbind(y)))
x y
A 1
A 4
B 2
B 5
C 3
C 6

我犯了什么错误,我怎样才能得到我想要的格式?我在使用 plyr 之前用 c(rbind(df$y)) 进行了测试,结果似乎是合理的,但效果并不理想。感谢您的帮助!

更新 我也试过 d <- ddply(df, .(x), summarise, y = as.numeric(unlist(strsplit(paste(y), split = ' ')))),它返回了相同的结果,没有基于 x 的聚合。

我们可以 paste 'y' 中的元素按 'x' 分组。为此,我们可以使用其中一种分组方法。使用 data.table,我们将 'data.frame' 转换为 'data.table' (setDT(df)),按 'x' 分组,我们 paste 'y' 元素在该组中。

 library(data.table)
 setDT(df)[, list(y= toString(y)), by = x]

或使用 dplyr,我们使用相同的方法。

 library(dplyr)
 df %>%
    group_by(x) %>%
    summarise(y= toString(y))