【发布时间】:2020-04-25 14:05:07
【问题描述】:
我正在尝试将数据集从长格式转换为宽格式。
我的输入数据如下:
df <- data.frame(year = c(2011:2013),
T1 = c("a", "b", "c"),
T2 = c("b", "c", "d"),
V1 = rep(1, 3),
V2 = rep(2, 3))
想要的输出在哪里
df2 <- data.frame(year = c(2011:2013),
a = c(1, 0, 0),
b = c(2, 1, 0),
c = c(0, 2, 1),
d = c(0, 0, 2))
我认为使这更具挑战性(至少对我而言)是因为 T1 和 V1 列是“对”,T2 和 V2 也是如此。试图收集列 T1 和 T2 然后传播(或 dcast)它,但似乎不起作用。
这是我尝试过的。
require(data.table)
dt <- setDT(df)
tmp <- melt(dt, measure.vars = c("T1", "T2"))
dcast(tmp, year ~ value, value.var = c("V1", "V2"))
当我 dcast 时,V1_a 和 V2_a 分别取值 1 和 2,不允许我保留“对”结构。
任何帮助将不胜感激!谢谢!
【问题讨论】:
-
查看您尝试过的代码会很有帮助,即使它不起作用
-
我已经更新了我的问题!抱歉!
标签: r data.table tidyverse