簡體   English   中英

left_join 的意外行為和合並導致 NA

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

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