【发布时间】:2016-04-18 21:27:33
【问题描述】:
我有一个数据框,其中包含两列识别信息和一列由连字符分隔的字母对:
df<-data.frame(
list = rep(1:3, each = 2),
set = rep(c("A","B"), times = 3),
item = c("ab-cd","ef-gh","ij-kl","mn-op","qr-st","uv-wx")
)
我一直在努力完成的是将数据框转换为以下形式,其中: 1. 由“list”索引的单独行分别折叠成一行; 2.“item”列以连字符为分隔符分割成相邻的列; 3. "set" 列作为命名结果列的基础。
df2 <- data.frame(
list = c(1:3),
A_1 = c("ab", "ij", "qr"),
A_2 = c("cd", "kl", "st"),
B_1 = c("ef", "mn", "uv"),
B_2 = c("gh", "op", "wx"))
我参考了一些之前发布的问题(特别是 [这里])并尝试使用 BASE 转置函数以及各种绑定函数以及 reshape 包和splitstackshape 包。我的近乎解决方案都不是优雅的,我想知道是否有这样做的好方法。
与往常一样,我非常感谢社区提供的建议和反馈。
【问题讨论】:
-
你能展示一些你的解决方案吗?你可能就快到了!
-
查看
tidyr包,例如rstudio.com/wp-content/uploads/2015/02/… -
您需要 dplyr/tidy 包来完成图片 - dplyr 中的 group_by() 和 tidyr 中的 spread() 应该会有所帮助。
标签: r split transformation