簡體   English   中英

返回匹配R中兩個數據幀匹配的數據

[英]Returning data of the match in matching two data frames in R

我在填寫數據框中的一列時遇到問題。

我有兩個數據框。 DF.A 是我的主要數據框,它已經有一些其他測量值,這導致一些變量在每個 ID 中顯示多次。 然后是 DF.B,它對每個 ID 的幾乎每個變量都有測量值。

DF.A<- data.frame(Id=c("001","001","001","002","002","003","003","003"),
                  Variable=c("0_1","2_1","2_1","0_1","0_2","0_1","0_1","2_1"),
                  Measurement=c(NA,NA,NA,NA,NA,NA,NA,NA))

DF.B<- data.frame(Id=c("001","002","002","003","003"),
                  Variable=c("2_1","0_1","0_2","0_1","2_1"),
                  Measurement=c(1,2,3,4,5))

我想要的是 DF.A 但如果 ID 和變量匹配,則填寫測量值,如下所示:

DF.C<- data.frame(Id=c("001","001","001","002","002","003","003","003"),
                  Variable=c("0_1","2_1","2_1","0_1","0_2","0_1","0_1","2_1"),
                  Measurement=c(NA,1,1,2,3,4,4,5))

我正在研究匹配和粘貼語句,但是如果 DF.A 的第 12 行在 DF.B 中有任何匹配,它只會在 DF.B 中插入第 12 行的測量值。

任何人都知道我如何從 DF.B 中的比賽中獲得測量結果以顯示在 DF.A 中的同一場比賽中?

dplyr選項使用full_join刪除 DF.A 的“測量”列以組合數據幀:

library(dplyr)
full_join(DF.A %>% select(-Measurement), DF.B)
#> Joining, by = c("Id", "Variable")
#>    Id Variable Measurement
#> 1 001      0_1          NA
#> 2 001      2_1           1
#> 3 001      2_1           1
#> 4 002      0_1           2
#> 5 002      0_2           3
#> 6 003      0_1           4
#> 7 003      0_1           4
#> 8 003      2_1           5

使用reprex v2.0.2創建於 2022-08-29

我們可以使用rows_update

library(dplyr)
DF.A$Measurement <- NA_real_
rows_update(DF.A, DF.B, by = c("Id", "Variable"))
   Id Variable Measurement
1 001      0_1          NA
2 001      2_1           1
3 001      2_1           1
4 002      0_1           2
5 002      0_2           3
6 003      0_1           4
7 003      0_1           4
8 003      2_1           5

暫無
暫無

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

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