Я пытаюсь преобразовать набор данных из длинного в широкий формат.
Мои входные данные ниже:
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"))
Когда я делаю это в виде дкаста, V1_a и V2_a принимают значения 1 и 2 соответственно, не позволяя мне сохранить структуру "пары".
Любая помощь будет принята с благодарностью! Спасибо!