我正在尝试采用以下小数据样本:
IndID J2015 E2015 Area
1 10 5 DC
2 15 7 DC
3 20 10 DC
然后使用reshape
或reshape2
将其转换为以下格式:
Area 1_J2015 1_E2015 2_J2015 2_E2015 3_J2015 3_E2015
DC 10 5 15 7 20 10
我将在几百万行数据中执行此操作,但是我无法找出执行此操作的正确公式,部分我认为这需要在两个或更多步骤中完成。
我在dcast
包中尝试了reshape
函数的各种格式:
df <- dcast(AreaID + J2015 + E2015 ~ IndID, data = data)
提前谢谢你。
答案 0 :(得分:3)
首先融化它,然后像这样dcast:
library(reshape2)
m <- melt(data, id.var = c("IndID", "Area"))
dcast(m, Area ~ IndID + variable)
,并提供:
Area 1_J2015 1_E2015 2_J2015 2_E2015 3_J2015 3_E2015
1 DC 10 5 15 7 20 10
或合并为一个命令:
recast(data, Area ~ IndID + variable, id.var = c("IndID", "Area"))