[英]Unexpected behavior with left_join and merge causing NAs
我正在嘗試將 R 中的 2 個數據集合並為兩者共有的一列“id”。
我確實嘗試過使用合並和left_join!
dataset1
id var1
KL90 20
KB20 10
KB20 30
KL10 40
KL10 50
KL20 60
KL90 90
KL80 20
KL80 10
dataset2
id varA varB
KL90 2 1.5
KL20 3 1.6
KL10 4 1.7
KL80 5 1.8
我確實使用了 merge 和 left_join by="id",並在下面生成了這個 dataset3:
dataset3
id var1 varA varB
KL90 20 2 1.5
KB20 10 3 1.6
KB20 30 NA NA
KL10 40 4 1.7
KL10 50 4 1.7
KL20 60 3 1.6
KL90 90 NA NA
KL80 20 5 1.8
KL80 10 5 1.8
有人可以幫助我嗎? 僅供參考:我將“id”轉換為字符。 請注意,在某些特定情況下它有效,但對於其他重復則沒有。
您的 output 與我得到的或預期的不符。 id
KB20
僅在dataset1
中找到,因此它將在join
ed output 中填充NA
。
library(tidyverse)
d1 <-
structure(list(id = c("KL90", "KB20", "KB20", "KL10", "KL10",
"KL20", "KL90", "KL80", "KL80"),
var1 = c(20L, 10L, 30L, 40L, 50L, 60L, 90L, 20L, 10L)),
class = "data.frame", row.names = c(NA, -9L))
d2 <-
structure(list(id = c("KL90", "KL20", "KL10", "KL80"), varA = 2:5,
varB = c(1.5, 1.6, 1.7, 1.8)), class = "data.frame", row.names = c(NA,
-4L))
left_join(d1, d2)
#> Joining, by = "id"
#> id var1 varA varB
#> 1 KL90 20 2 1.5
#> 2 KB20 10 NA NA
#> 3 KB20 30 NA NA
#> 4 KL10 40 4 1.7
#> 5 KL10 50 4 1.7
#> 6 KL20 60 3 1.6
#> 7 KL90 90 2 1.5
#> 8 KL80 20 5 1.8
#> 9 KL80 10 5 1.8
由reprex package (v2.0.1) 於 2022 年 2 月 1 日創建
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.