簡體   English   中英

如何連接表、保留列和顯示 NA 值?

[英]How to join tables, keep columns and display NA values?

我正在嘗試對表進行完全連接,保留兩個列並在不匹配時插入 NA 值:

d1 = tibble(
  Period1 = c('jan/2020', 'fev/2020', 'mar/2020', 'mar/2020', 'nov/2020')
)

d2 = tibble(
  Period2 = c('jan/2020', 'abr/2020', 'mar/2020', 'fev/2020', 'dez/2020')
)

full_join(d1,d2, by = c("Period1" = 'Period2'))

我得到這個輸出:

在此處輸入圖像描述

但我想要這個 output:

# A tibble: 7 x 2
#  Period1  Period2 
#  <chr>    <chr>   
#1 jan/2020 jan/2020
#2 fev/2020 fev/2020
#3 mar/2020 mar/2020
#4 mar/2020 mar/2020
#5 nov/2020 <NA>    
#6 <NA>     abr/2020
#7 <NA>     dez/2020

我們可以創建一個新列,然后加入

library(dplyr)
d1 %>%
   mutate(Period2 = Period1) %>% 
  full_join(d2 %>%
         mutate(Period1 = Period2), by = c("Period1" = "Period2")) %>%
  select(Period1 = Period2, Period2 = Period1.y)
# A tibble: 7 x 2
#  Period1  Period2 
#  <chr>    <chr>   
#1 jan/2020 jan/2020
#2 fev/2020 fev/2020
#3 mar/2020 mar/2020
#4 mar/2020 mar/2020
#5 nov/2020 <NA>    
#6 <NA>     abr/2020
#7 <NA>     dez/2020

使用data.table

library(data.table)
dt <- merge(setDT(d1)[,Period := Period1],
            setDT(d2)[,Period := Period2],
            by.x = "Period1",
            by.y = "Period2", all = TRUE,
            suffixes = c("1",'2')
      )[,-1]

dt
    Period1  Period2
1:     <NA> abr/2020
2:     <NA> dez/2020
3: fev/2020 fev/2020
4: jan/2020 jan/2020
5: mar/2020 mar/2020
6: mar/2020 mar/2020
7: nov/2020     <NA>

您將收到一條警告,因為您在合並中創建了一個列Period1這是一個鍵,但您可以忽略它( [,-1]用於刪除此臨時連接鍵)

暫無
暫無

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

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