[英]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.