У меня есть следующий фиктивный набор данных:
A <- c("Acura", "BMW", "Toyota", NA)
B <- c("1993;2004;2010", "2013", "2003;2011", NA)
C <- c("Blue;Black;Gold", "Silver", NA, NA)
df <- data.frame(A = A, B = B, C = C)
Итак, фрейм данных выглядит следующим образом:
> df
A B C
1 Acura 1993;2004;2010 Blue;Black;Gold
2 BMW 2013 Silver
3 Toyota 2003;2011 <NA>
4 <NA> <NA> <NA>
Я хотел бы расширить набор данных до нескольких строк, чтобы он выглядел следующим образом:
> new_df
A B C
1 Acura 1993 Blue
2 Acura 2004 Black
3 Acura 2010 Gold
4 BMW 2013 Silver
5 Toyota 2003 <NA>
6 Toyota 2011 <NA>
7 <NA> <NA> <NA>
Я попытался использовать tidyr :: separa_rows, однако я получаю эту ошибку, потому что отдельным строкам требуется одинаковое количество разделителей в каждом столбце за строкой. Это означает, что строка 3 (A = Toyota) является проблемой, поскольку в столбце C для этой строки есть NA, а не что-то вроде «NA; NA». Это команда и ошибка, которую я получаю:
df %>% separate_rows(B, C, sep = ";", convert = TRUE)
Error: All nested columns must have the same number of elements.
df[c(1:2,4),] %>% separate_rows(B, C, sep = ";", convert = TRUE)
A B C
1 Acura 1993 Blue
2 Acura 2004 Black
3 Acura 2010 Gold
4 BMW 2013 Silver
5 <NA> NA <NA>
df[c(3),] %>% separate_rows(B, C, sep = ";", convert = TRUE)
Error: All nested columns must have the same number of elements.
Может кто-нибудь помочь как добиться new_df?!