#r #dplyr #purrr #pmap
Вопрос:
Я пытаюсь объединить столбцы в один столбец, я объединил их с помощью pmap
.
В некоторых столбцах есть NAs, я хотел бы удалить NAs из объединенного столбца 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))
Ответ №1:
Для этого мы можем указать лямбда-функцию
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
Комментарии:
1. Спасибо! .. Знаешь что, я ждал тебя, когда писал это, и был уверен, что ты ответишь на это 🙂 Это отлично работает, и я могу применять операции со списком
length
first
и т. Д.