我已经在这里搜索以找到用于重塑数据的解决方案。不幸的是,我找不到解决方案。数据样本是
id Group MKO AGC OLO PKS Z1
1 5 51 44 23 31 7
2 2 30 33 89 96 6
3 7 44 11 19 20 2
感兴趣的输出是
id Group MAOP code MZ1 A1 O1 P1
1 5 01-04 0 51 44 23 31
1 5 0 1 7
2 2 01-04 0 30 33 89 96
2 2 0 1 6
3 7 01-04 0 44 11 19 20
3 7 0 1 2
我试图在重塑2中融化,但是我没有成功。 R可以帮我们吗?非常感谢您的建议。
答案 0 :(得分:1)
您在这里。我没有尝试修饰输出以使其完全匹配您的输出,但这应该给您一个可以在R中完成的想法。而且,我也不建议这是最有效的解决方案。
将您的代码段放入data.frame(通常将从文件而不是文本中读取)。
DF <- read.table(header = TRUE, text =
"id Group MKO AGC OLO PKS Z1
1 5 51 44 23 31 7
2 2 30 33 89 96 6
3 7 44 11 19 20 2"
)
现在使用两个不同的行结构创建两个数据框,然后进行联接和排序。
df1 <- with(DF, data.frame(id, Group, MAOP="01-04", code=0, MZ1=MKO, A1=AGC, O1=OLO, P1=PKS))
df2 <- with(DF, data.frame(id, Group, MAOP="0", code=1, MZ1=Z1, A1="", O1="", P1=""))
df3 <- rbind(df1,df2)
df3 <- df3[with(df3, order(id, code, row.names(df3))), ]
df3
# id Group MAOP code MZ1 A1 O1 P1
# 1 1 5 01-04 0 51 44 23 31
# 4 1 5 0 1 7
# 2 2 2 01-04 0 30 33 89 96
# 5 2 2 0 1 6
# 3 3 7 01-04 0 44 11 19 20
# 6 3 7 0 1 2