【发布时间】:2020-12-24 16:44:45
【问题描述】:
我有一个data.frame,它将id 列映射到group 列,而id 列不是唯一的,因为同一个id 可以映射到多个groups:
set.seed(1)
df <- data.frame(id = paste0("id", sample(1:10,300,replace = T)), group = c(rep("A",100), rep("B",100), rep("C",100)), stringsAsFactors = F)
我想将此data.frame 转换为list,其中每个元素是每个group 中的ids。
对于我正在处理的数据大小来说,这似乎有点慢:
library(dplyr)
df.list <- lapply(unique(df$group), function(g) dplyr::filter(df, group == g)$id)
所以我在想这个:
df.list <- df %>%
dplyr::group_by(group) %>%
dplyr::group_split()
假设它比我的第一个选项更快,知道如何让它返回与第一个选项相同的输出而不是data.frames 的列表吗?
【问题讨论】: