在r中具有所有数据和独特观察标签的长到宽

时间:2016-08-17 14:42:04

标签: r

我有一个包含3列(Animal,Var1,Var2)和3行的数据框( 1 用于鼠标,猫和狗):

Animal   Var1  Var2
Mouse    5     5.5
Cat      7     7.4
Dog      1     6.3

我希望它看起来像这样:

Mouse.Var1 Mouse.Var2 Cat.Var1 Cat.Var2 Dog.Var1 Dog.Var2
5           5.5        7        7.4       1       6.3

我一直在尝试使用reshape和reshape2,但似乎都没有用。 请帮忙。

1 个答案:

答案 0 :(得分:0)

事实上这可以用reshape2包来完成(虽然我不确定你为什么要这样做)。首先,您必须熔化数据,以便Var1和Var2列成为精简列中的标签

library(reshape2)

df <- data.frame(Animal = c('Mouse', 'Cat', 'Dog'), Var1 = c(5, 7, 1), Var2 = c(5.5, 7.4, 6.3))
df.melt <- melt(df, id.vars = 'Animal')

这会产生:

  Animal variable value
1  Mouse     Var1   5.0
2    Cat     Var1   7.0
3    Dog     Var1   1.0
4  Mouse     Var2   5.5
5    Cat     Var2   7.4
6    Dog     Var2   6.3

然后可以将其转换为您之后的格式:

df.wide <- dcast(df.melt, . ~ Animal + variable)

  . Cat_Var1 Cat_Var2 Dog_Var1 Dog_Var2 Mouse_Var1 Mouse_Var2
1 .        7      7.4        1      6.3          5        5.5