我有以下数据:
mydata <- data.frame(VAR1 = c("A", "A", "A", "A", "A", "A", "B", "B", "B",
"B", "B", "B", "C", "C", "C", "C", "C", "C",
"D", "D", "D", "D", "D", "D", "E", "E", "E", "E", "E", "E"),
VAR2 = c("A1", "A1", "A1", "A2", "A2", "A2", "B1", "B1", "B1",
"B2", "B2", "B2", "C1", "C1", "C1", "C2", "C2", "C2",
"D1", "D1", "D1", "D2", "D2", "D2", "E1", "E1", "E1", "E2", "E2","E2"),
VAR3 = c("alpha", "beta", "gamma", "alpha", "beta", "gamma", "alpha", "beta", "gamma", "alpha",
"beta", "gamma", "alpha", "beta", "gamma", "alpha", "beta", "gamma", "alpha", "beta",
"gamma", "alpha", "beta", "gamma", "alpha", "beta", "gamma", "alpha", "beta", "gamma"),
VALUE = c(56, 38, 83, 29, 73, 75, 99, 88, 30, 58,
97, 42, 64, 67, 45, 99, 62, 65, 7, 40,
49, 62, 82, 63, 65, 40, 45, 29, 73, 51))
我希望以宽格式转置数据,VAR1
&amp; VAR2
是列,VAR3
的值将是3个额外列,VALUE
列将在此结构中填充为值。
我的问题是如何使用tidyverse&amp; amp; data.table :: dcast?如果数据量非常大,那么效率会更高,比如原始格式为2 GB(我的RAM大小为8 GB)?
谢谢!
答案 0 :(得分:1)
您可以使用dcast()
中的data.table
。
library(data.table)
dcast(mydata,
VAR1 + VAR2 ~ VAR3,
value.var = "VALUE")
将返回
VAR1 VAR2 alpha beta gamma
1 A A1 56 38 83
2 A A2 29 73 75
3 B B1 99 88 30
4 B B2 58 97 42
5 C C1 64 67 45
6 C C2 99 62 65
7 D D1 7 40 49
8 D D2 62 82 63
9 E E1 65 40 45
10 E E2 29 73 51