簡體   English   中英

將一個數據幀中的行與第二秒中的列匹配

[英]Matching rows in one data frame with columns in a second

樣本數據:

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

在我看來,您真的想將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也應該不是問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM