是否可以将包含3个元素的向量的列拆分为数据帧内的3个单独的列?
包含c("aa","bb","cc")
等向量的一列应变成包含奇异值的3列,如
"aa" "bb" "cc"
声称执行此操作的每个tidyr或dyplr操作仅适用于字符串,并在拆分之前将我的列的内容格式化为字符串"c("aa","bb","cc")"
(?!)。
是否有任何库可以将向量拆分为单独的列?
答案 0 :(得分:3)
以下是使用dplyr
和tidyr
的一种解决方案:
library(dplyr)
library(tidyr)
df %>%
unnest(a) %>%
group_by(id) %>%
mutate(key = row_number()) %>%
spread(key, a)
# A tibble: 2 x 4
# Groups: id [2]
id `1` `2` `3`
* <dbl> <chr> <chr> <chr>
1 1.00 aa bb cc
2 2.00 aa bb cc
使用Florian提供的数据:
df <- data.frame(
id = c(1,2),
a = I(list(c("aa", "bb", "cc"), c("aa", "bb", "cc")))
)