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列与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

在我看来,您真的想将 with 的转置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 回答