这是一个整洁的数据框
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?
答案 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
或者另一个选项是 nest
或 nest_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