【问题标题】:Remove NA elements from column of vectors using dplyr使用 dplyr 从向量列中删除 NA 元素
【发布时间】:2021-03-24 15:49:00
【问题描述】:

我正在尝试将列合并为一列,我已使用 pmap 将它们合并。

有些列有 NA,我想从组合列 col_comb 中删除 NA,并保留其他值。

df = tribble(~id, ~col1, ~col2, ~col3,
             1, "a", "b", "c",
             2, "a", NA, "c",
             3, "a", NA, NA,
             4, NA, NA, NA)
df = df %>% 
  mutate(col_comb = pmap(list(col1,col2,col3), c)) 

【问题讨论】:

    标签: r dplyr purrr pmap


    【解决方案1】:

    我们可以指定一个 lambda 函数来做到这一点

    library(dplyr)
    library(purrr)
    df1 <- df %>% 
        mutate(col_comb = pmap(select(., starts_with('col')), 
                 ~  as.character(na.omit(c(...)))))
    

    -输出

    df1$col_comb
    #[[1]]
    #[1] "a" "b" "c"
    
    #[[2]]
    #[1] "a" "c"
    
    #[[3]]
    #[1] "a"
    
    #[[4]]
    #character(0)
    

    或者另一个选项是c_acrossrowwise

    df %>% 
      rowwise %>% 
      mutate(col_comb = list(na.omit(c_across(-id)))) %>% 
      ungroup
    

    【讨论】:

    • 谢谢! .. 你知道吗,我写这篇文章的时候一直在等你,我相信你会回答的 :) 效果很好,我可以应用列表操作lengthfirst 等。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-01-17
    相关资源
    最近更新 更多