将数据框重新排列到表格,与"融化"相反

jon*_*jon 55 r reshape dataframe

我有这样庞大的数据帧:

SN = c(1:100, 1:100, 1:100, 1:100)  
class = c(rep("A1", 100), rep("B2", 100), rep("C3", 100), rep("D4", 100)) # total 6000 levels 
myvar = rnorm(400)
mydf = data.frame(SN, class, myvar) 
Run Code Online (Sandbox Code Playgroud)

我希望"unmelt"到一个表,每个级别为单列,myvar填充:

SN          A1            B2          C3         D4       .............and so on for all 6000 
Run Code Online (Sandbox Code Playgroud)

我怎么能做到这一点,我知道这是一个简单的问题,但我无法弄明白.

Joh*_*lby 54

> dcast(mydf, SN ~ class)

  SN         A1         B2          C3          D4
1  1  0.1461258  0.8325014  0.33562088 -0.07294576
2  2  0.5964182  0.4593710 -0.23652803 -1.52539568
3  3  2.0247742 -1.1235963  1.79875447 -1.87462227
4  4  0.8184004  1.3486721  0.76076486 -1.18311991
5  5 -0.6577212  0.3666741 -0.06057506  1.38825487
6  6  0.1590443  0.2043661  0.08161778  0.10421797
...
Run Code Online (Sandbox Code Playgroud)

  • 注意:这来自`reshape2`库. (11认同)
  • 另请注意,"最佳实践"将是:dcast(mydf,SN~class,value.var ="myvar") (2认同)

SFu*_*n28 5

molten = melt( mydf , id.vars = c( "SN" , "class" ) , measure.vars = "myvar" )
casted = dcast( molten , SN~class )
Run Code Online (Sandbox Code Playgroud)