[英]querying one R data frame by matching multiple columns from a second data frame
[英]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.