使用列表列表将整洁的数据框转换为数据框

时间:2021-06-29 18:16:02

标签: r

这是一个整洁的数据框

df_tidy <- tibble(
  company = c("A", "B", "A", "B", "A", "B"),
  line_data = c(1, 2, 2, 2, 1, 1)
)

要求的格式为:

df_ll <- structure(list(company = c("A", "B"), line_data = list(list(c(1, 2, 1)), list(c(2, 2, 1)))), row.names = c(NA, -2L), class = c("tbl_df", "tbl", "data.frame"))

如何将 df_tidy 转换为 df_ll?

3 个答案:

答案 0 :(得分:2)

按 'company' summarise 分组 list 中的 'line_data'

df_ll2 <- df_tidy %>%
    group_by(company) %>%
    summarise(line_data = list(list(line_data)))

-检查预期

all.equal(df_ll, df_ll2)
[1] TRUE

或者另一个选项是 nestnest_by,然后将 tibble 转换为 list

df_tidy %>% 
   nest_by(company, .key = "line_data") %>% 
   mutate(line_data = list(list(unlist(line_data)))) %>% 
   ungroup

答案 1 :(得分:1)

您也可以使用 plyr 包:

df_ll <- dlply(df_tidy,.(company),c)

答案 2 :(得分:0)

readingsList
相关问题