【发布时间】:2018-05-18 13:18:36
【问题描述】:
我有一个包含 3 列的数据框。其中一列(第二列)包含每个单元格的值列表。这里dput样本数据:
df <- structure(list(column1 = c("HEATER", "COOLER"), column2 = list(structure(list(
insidelist = structure(list(es = list("1"), en = list("00"), la = list(
"01")), .Names = c("es", "en", "la"))), .Names = "insidelist"),
structure(list(insidelist = structure(list(es = list("1"), en = list(
"01"), la = list("01")), .Names = c("es", "en", "la"))), .Names = "insidelist")),
column3 = c("88", "31")), .Names = c("column1", "column2", "column3"
), row.names = c(NA, -2L), class = "data.frame")
给出这个df:
column1 column2 column3
1 HEATER 1, 00, 01 88
2 COOLER 1, 01, 01 31
如何从第二列中获取该值列表作为原始数据框的列?
期望的输出:
column1 column2 Column3 column4 column5
1 HEATER 1 00 01 88
2 COOLER 1 01 01 31
【问题讨论】:
-
或许
df %>% mutate(out = map(column2, ~ .x %>% transpose %>% unlist %>% as.list %>% as_tibble)) %>% unnest %>% select(-column2) -
稍作改动即可获得所需的列名:
df %>% mutate(out = map(column2, ~data.frame(new = t(unlist(.)), stringsAsFactors = F))) %>% unnest() %>% select(column1, matches("new"), column3) %>% setNames(paste0("column", 1:ncol(.)))