私はいくつかの整頓行動について混乱しています。私はこのような単一の応答ネスト解除することができます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
をしかし、私は私のデータセット内の複数の列をネスト解除する必要がある、と列は、NASのさまざまな数字を持っています。私はこれを試してみましたが、それがエラーを投げた:
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
最初のコールで他のネストされた列を削除するように見えるため、ネストされていない順に動作しない同様の問題が発生しました –