【发布时间】:2014-06-20 07:06:09
【问题描述】:
我正在尝试将一些代码从plyr 移植到dplyr。
在特定情况下,我想将 2 种列组合在一起:nameX 和 propX(请参阅下面的示例数据框 foo),以及一个 id 列。我使用 ddply 得到的结果给了我一个只有 3 列的数据框,id、name 和 prop(请参阅下面的数据框 bar)。
library(plyr)
foo <- rbind(
data.frame(
id = 'A',
name1 = "dXz",
prop1 = 20,
name2 = "Rpt",
prop2 = 65,
name3 = "YYq",
prop3 = 15
),
data.frame(
id = 'B',
name1 = "hut",
prop1 = 30,
name2 = "TPn",
prop2 = 50,
name3 = "pTm",
prop3 = 20
),
data.frame(
id = 'C',
name1 = "JpT",
prop1 = 45,
name2 = "Fil",
prop2 = 25,
name3 = "jjS",
prop3 = 30
)
)
bar <- ddply(
foo,
.(id),
function(x) {
data.frame(
id = as.character(x$id),
name = c(as.character(x$name1), as.character(x$name2),as.character(x$name3),as.character(x$name4),as.character(x$name5)),
prop = c(x$prop1,x$prop2,x$prop3,x$prop4,x$prop5)
)
}
)
我一直在尝试使用dplyr 和tidyr 给出的最新运算符,但我似乎无法进行两个并行分组操作。
foo %>%
gather(name, prop, -id)
【问题讨论】: