1

私は次のような大きなデータセットを持っています:

myd <- data.frame (var1 = c("A", "A", "B1-1", "B1-1", "C", "C", "D1", "D1"),
                   var2 = c(1,    2,    2,       2,     3,  1,   1,    4))
 var1 var2
1    A    1
2    A    2
3 B1-1    2
4 B1-1    2
5    C    3
6    C    1
7   D1    1
8   D1    4

var1の各レベルは2回繰り返され、var2には2つの値があることに注意してください。

var1のレベルごとに、var2の値が行ごとに(短縮されて)1つの列に結合され、次のタイプの出力を持つ新しいデータセットを作成したいと思います。

   var1    var2.h1 var2.h2      h1.h2  
1    A      1         2           12
2   B1-1    2         2           22
3    C      1         3           13
4   D1      1         4           14
4

2 に答える 2

1
library("reshape2")
myd$pos <- c("h1", "h2")
myd.wide <- dcast(myd, var1~pos, value.var="var2")
names(myd.wide)[2:3] <- paste("var2", names(myd.wide)[2:3], sep=".")
myd.wide$h1.h2 <- paste0(myd.wide$var2.h1, myd.wide$var2.h2)

これは

> myd.wide
  var1 var2.h1 var2.h2 h1.h2
1    A       1       2    12
2 B1-1       2       2    22
3    C       3       1    31
4   D1       1       4    14
于 2012-10-08T21:45:08.283 に答える
1
library(plyr)
ddply(myd, .(var1), function(x) {
     foo <- data.frame(rbind(x$var2), sprintf("%s%s", x$var2[1], x$var2[2]))
     names(foo) <- c("var2.h1", "var2.h2", "h1.h2")
     foo
    })

var1 var2.h1 var2.h2 h1.h2
1    A       1       2    12
2 B1-1       2       2    22
3    C       3       1    31
4   D1       1       4    14
于 2012-10-08T21:29:45.030 に答える