我可以直接将列表列展开成n列吗?
假设该列表是规则的,其中所有元素长度相等。
如果我有一个字符向量而不是列表列,我可以使用
示例数据:
假设该列表是规则的,其中所有元素长度相等。
如果我有一个字符向量而不是列表列,我可以使用
tidyr::separate
。我可以使用tidyr::unnest
,但我们需要另一个辅助变量才能使用tidyr::spread
。我是否遗漏了明显的方法?示例数据:
library(tibble)
df1 <- data_frame(
gr = c('a', 'b', 'c'),
values = list(1:2, 3:4, 5:6)
)
目标:
# A tibble: 3 x 2 gr values <chr> <list> 1 a <int [2]> 2 b <int [2]> 3 c <int [2]>
df2 <- data_frame( gr = c('a', 'b', 'c'), V1 = c(1, 3, 5), V2 = c(2, 4, 6) )
# A tibble: 3 x 3 gr V1 V2 <chr> <dbl> <dbl> 1 a 1. 2. 2 b 3. 4. 3 c 5. 6.
当前方法:
unnest(df1) %>% group_by(gr) %>% mutate(r = paste0('V', row_number())) %>% spread(r, values)
library(splitstackshape); cSplit(df1, "values", sep = ":")
? - Ronak Shah