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))
我有一个包含 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))