有沒有辦法在 R 中取消嵌套串列列以洗掉層次結構并將單個組件保留在向量中?我嘗試了 tidyr 的 unnest 功能,但出現錯誤
library(dplyr)
library(tidyr)
mydf <- tibble(
a1 = c(20, 21, 23, 45),
a2 = list(c("Male", "Female"), c("Yes", "No"),
c("Secondary", "Primary", "Tertiary"),
c("13-14", "15-16", "17 - 18"))
)
#---- Desired output
mydf1 <- tibble(
a1 = c(20, 21, 23, 45),
a2 = c("Male, Female", "Yes, No",
"Secondary, Primary, Tertiary",
"13-14, 15-16, 17 - 18"))
#--- Trial
mydf %>%
mutate(a3 = unnest(a2))
uj5u.com熱心網友回復:
我寧愿sapply用toString:
mydf$a3 <- sapply(mydf$a2, toString)
現在:
> mydf
# A tibble: 4 x 3
a1 a2 a3
<dbl> <list> <chr>
1 20 <chr [2]> Male, Female
2 21 <chr [2]> Yes, No
3 23 <chr [3]> Secondary, Primary, Tertiary
4 45 <chr [3]> 13-14, 15-16, 17 - 18
>
toString將元素連接成一個字串并用, (逗號空格)分隔它們。
uj5u.com熱心網友回復:
這將起作用:
mydf %>%
unnest_wider(a2) %>% # not inside mutate and also '_wider' to get separate columns
unite(col = "a2", -a1, sep = ", ", na.rm = TRUE) #and now unite those separate cols
uj5u.com熱心網友回復:
使用 map
library(dplyr)
library(purrr)
mydf %>%
mutate(a2 = map_chr(a2, toString))
# A tibble: 4 × 2
a1 a2
<dbl> <chr>
1 20 Male, Female
2 21 Yes, No
3 23 Secondary, Primary, Tertiary
4 45 13-14, 15-16, 17 - 18
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/354145.html
