我有一个split()在R 中窒息的大型数据集.我能够使用dplyrgroup_by(无论如何这是一种首选方式)但是我无法将结果保存grouped_df为数据帧列表,这是我连续处理步骤所需的格式(我需要强迫SpatialDataFrames和类似的).
考虑一个样本数据集:
df = as.data.frame(cbind(c("a","a","b","b","c"),c(1,2,3,4,5), c(2,3,4,2,2)))
listDf = split(df,df$V1)
Run Code Online (Sandbox Code Playgroud)
回报
$a
V1 V2 V3
1 a 1 2
2 a 2 3
$b
V1 V2 V3
3 b 3 4
4 b 4 2
$c
V1 V2 V3
5 c 5 2
Run Code Online (Sandbox Code Playgroud)
我想用group_by(类似的东西group_by(df,V1))来模仿这个,但这会返回一个,grouped_df.我知道do应该可以帮助我,但我不确定使用情况(另见讨论链接.)
请注意,每个列表的拆分名称都是用于建立此组的因子的名称 - 这是一个所需的功能(最终,这是从dfs列表中提取这些名称的方法的奖励).
我有以下使用dplyr 的 group_split 的过程:
library(tidyverse)
set.seed(1)
iris %>% sample_n(size = 5) %>%
group_by(Species) %>%
group_split()
Run Code Online (Sandbox Code Playgroud)
结果是:
[[1]]
# A tibble: 2 x 5
Sepal.Length Sepal.Width Petal.Length Petal.Width Species
<dbl> <dbl> <dbl> <dbl> <fct>
1 5 3.5 1.6 0.6 setosa
2 5.1 3.8 1.5 0.3 setosa
[[2]]
# A tibble: 2 x 5
Sepal.Length Sepal.Width Petal.Length Petal.Width Species
<dbl> <dbl> <dbl> <dbl> <fct>
1 5.9 3 4.2 1.5 versicolor
2 6.2 2.2 4.5 1.5 versicolor
[[3]]
# A tibble: …Run Code Online (Sandbox Code Playgroud)