【发布时间】:2018-10-07 08:01:59
【问题描述】:
我在使用 tidyr 包重新排列以下数据框时遇到问题:
data <- data.frame(
name = rep(c("John", "Mary", "Peter", "Sarah"), each=2),
firm = c("a", "b", "c", "d", "a", "b", "c", "d"),
rank = rep(1:2, 4),
value = rnorm(8)
)
我想重塑它,使每个唯一的“名称”变量都是一个行名,“值”作为沿该行的观察值,“排名”作为列名,后跟“公司”名称。有点像这样:
name 1 firm_1 2 firm_2
John 0.3407997 a -0.3795377 b
Mary -0.8981073 c -0.5013782 d
Peter 0.3407997 a -0.3795377 b
Sarah -0.8981073 c -0.5013782 d
【问题讨论】:
-
试试
library(data.table);dcast(setDT(data), name ~ rank, value.var = c("firm", "value")) -
您可以在 akrun 的解决方案后面添加
[,c(1,4,2,5,3)]以像您的解决方案一样对其进行排序。 -
这与this question 和this question 密切相关。你可以在那里尝试解决方案,然后看看你卡在哪里。