У меня есть следующий фрейм данных:
ДАННЫЕ
df <- data.frame(ID=c("foo","bar","cake") , col1 = c("1a/1b","1a","1b"), col2 = c("2b","2a","2b"), col3=c("3b","3b/3a",NA))
col1 col2 col3
1 1a/1b 2b 3b
2 1a 2a 3a/3b
3 1b 2b <NA>
Я хотел бы превратить это в 6 столбцов с Имена 1a 1b 2a 2b 3a 3c
Вот что у меня сейчас есть (я заметил, что есть значения NA, которые я хотел бы сохранить как NA):
library(dplyr)
library(tidyr)
df %>%
pivot_longer(cols = -ID) %>%
separate_rows(value, sep="/") %>%
mutate(i1 = 1) %>%
select(-name) %>%
pivot_wider(names_from = value, values_from = i1, values_fill = list(i1 = NA))
# A tibble: 3 x 8
ID `1a` `1b` `2b` `3b` `2a` `3a` `NA`
<fct> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
1 foo 1 1 1 1 0 0 0
2 bar 1 0 0 1 1 1 0
3 cake 0 1 1 0 0 0 1
Желаемый выход
ID `1a` `1b` `2b` `3b` `2a` `3a`
<fct> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
1 foo 1 1 1 1 0 0
2 bar 1 0 0 1 1 1
3 cake 0 1 1 NA 0 NA