使用 dplyr 从向量列中删除 NA 元素
Remove NA elements from column of vectors using dplyr
我正在尝试将列合并为一列,我使用 pmap
将它们组合在一起。
有些列有 NA,我想从组合列中删除 NA col_comb
并保留其他值。
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))
我们可以指定一个 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_across
和 rowwise
df %>%
rowwise %>%
mutate(col_comb = list(na.omit(c_across(-id)))) %>%
ungroup
我正在尝试将列合并为一列,我使用 pmap
将它们组合在一起。
有些列有 NA,我想从组合列中删除 NA col_comb
并保留其他值。
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))
我们可以指定一个 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_across
和 rowwise
df %>%
rowwise %>%
mutate(col_comb = list(na.omit(c_across(-id)))) %>%
ungroup