0

サンプルデータ:

t1 <- data.frame(
  CName=c("334","5as4","ggg","bbb"), 
  D1=c(1," ",3,1), 
  D2=c(3,4,5,5)
)

t2 <- data.frame(
  PName=c("zz","yy","xx","ww"), 
  `334`=c(5,6,3,5), 
  "ggg"=c(7,5,4,3), 
  `5as4`=c(9,9,1,1),
  check.names=FALSE
)

生産:

t1
  CName D1 D2
1   334  1  3
2  5as4     4
3   ggg  3  5
4   bbb  1  5

t2
  PName 334 ggg 5as4
1    zz   5   7    9
2    yy   6   5    9
3    xx   3   4    1
4    ww   5   3    1

t1$CName列column を の列見出しに一致させたいt2

望ましい出力は次のとおりです。

   PName  334  ggg  5as4
     D1   1    3     
     D2   3    5    4
1    zz   5    7    9
2    yy   6    5    9
3    xx   3    4    1
4    ww   5    3    1
4

1 に答える 1

1

t1あなたは本当に転置をとマージしたいと思っているようですt2

ステップ1:テーブルの転置コピーを作成しますt1

tt1 <- as.data.frame(t(t1[, -1]), stringsAsFactors=FALSE)
names(tt1) <- t1[, 1]
tt1$PName = rownames(tt1)

tt1
   334 5as4 ggg bbb PName
D1   1        3   1    D1
D2   3    4   5   5    D2

ステップ2:マージ

merge(tt1, t2, all=TRUE, sort=FALSE)

  334 5as4 ggg PName  bbb
1   1        3    D1    1
2   3    4   5    D2    5
3   5    9   7    zz <NA>
4   6    9   5    yy <NA>
5   3    1   4    xx <NA>
6   5    1   3    ww <NA>

ステップ3:必要のない列を削除するだけです。

  334 5as4 ggg PName
1   1        3    D1
2   3    4   5    D2
3   5    9   7    zz
4   6    9   5    yy
5   3    1   4    xx
6   5    1   3    ww

記載されているデータサイズが1000エントリの場合でも、これはRにとって問題にはなりません。

于 2012-07-11T07:30:47.227 に答える