Я смущен о каком-то тидирском поведении. Я могу unnest единственный ответ, как это:tidyr: многократное раздражение с различными значениями NA
library(tidyr)
resp1 <- c("A", "B; A", "B", NA, "B")
resp2 <- c("C; D; F", NA, "C; F", "D", "E")
resp3 <- c(NA, NA, "G; H; I", "H; I", "I")
data <- data.frame(resp1, resp2, resp3, stringsAsFactors = F)
tidy <- data %>%
transform(resp1 = strsplit(resp1, "; ")) %>%
unnest()
# Source: local data frame [6 x 3]
#
# resp2 resp3 resp1
# (chr) (chr) (chr)
# 1 C; D; F NA A
# 2 NA NA B
# 3 NA NA A
# 4 C; F G; H; I B
# 5 D H; I NA
# 6 E I B
Но мне нужно unnest несколько столбцов в моем наборе данных, а столбцы имеют разное число ВПЛ. Я попробовал это, и бросил ошибку:
data %>%
transform(resp1 = strsplit(resp1, "; "),
resp2 = strsplit(resp2, "; "),
resp3 = strsplit(resp3, "; ")) %>%
unnest()
# Error: All nested columns must have the same number of elements.
Я ожидал, что приведенный выше код даст мне тот же результат, как следующее:
# unnesting multiple response (desired output/is there a better way?)
data %>%
transform(resp1 = strsplit(resp1, "; ")) %>%
unnest() %>%
transform(resp2 = strsplit(resp2, "; ")) %>%
unnest() %>%
transform(resp3 = strsplit(resp3, "; ")) %>%
unnest()
# resp1 resp2 resp3
# (chr) (chr) (chr)
# 1 A C NA
# 2 A D NA
# 3 A F NA
# 4 B NA NA
# 5 A NA NA
# 6 B C G
# 7 B C H
# 8 B C I
# 9 B F G
# 10 B F H
# 11 B F I
# 12 NA D H
# 13 NA D I
# 14 B E I
Я новичок в R, но это чувствует себя неуклюжей и заставляет меня задаться вопросом, злоупотребляю ли я тем, что я не должен злоупотреблять. Что происходит с неудачной попыткой множественного опроса?
Последняя строка дает _error: неправильный размер результата (5), как ожидается 6 или 1_. То же самое, когда я заменяю его 'unnest (resp1, resp2, resp3)'. – alexpghayes
Хм, интересно. Код, похоже, работает для меня. Я вставил весь блок кода, который воспроизводит ваш результат. – Psidom
У меня есть аналогичная проблема, при которой выполнение unsest последовательно не работает, потому что кажется, что удаляет другие вложенные столбцы при первом вызове –