在 R 中,如何在多個數據幀上使用 left_join?

別處

如何更輕鬆地組合數據框?我有三個數據框(table_base / table_a / table_b)。我想將它們按行組合以獲得結果為“table_final”。下面是我的代碼,它可以工作,但有點複雜。我怎樣才能簡化它?實際上,除了 table_a 和 table_b,我還有更多的表要加入。

    library(dplyr)
    table_base <- data.frame(cat=c("a","b","c","d"))
    
    table_a <- data.frame(cat=c("a","b"),
                          value=c(1,2))
    
    table_b <- data.frame(cat=c("a","c","d"),
                          value=c(7,9,10))


table_final <- table_base %>% 
  left_join(table_a,by='cat',fill=0) %>% 
  left_join(table_b,by='cat') %>% 
  mutate(value=if_else(!is.na(value.x),value.x,value.y)) %>% 
  select(cat,value)

在此處輸入圖片說明

zx8754

使用purrr::reduce合併多個數據幀,然後使用dplyr::coalesce獲取第一個非 na 值:

library(dplyr)
library(purrr)

list(table_base, table_a, table_b) %>% 
  reduce(left_join, by = "cat") %>% 
  mutate(value = coalesce(!!!select(., starts_with("value")))) %>% 
  select(cat, value)

#   cat value
# 1   a     1
# 2   b     2
# 3   c     9
# 4   d    10

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章