我对一些tidyr行为感到困惑。我可以UNNEST这样的单一响应:tidyr:多个unnesting与不同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
我有一个类似的问题,顺序运行不顺畅不起作用,因为它似乎删除第一次调用其他嵌套列 –