相关疑难解决方法(0)

使用dplyr group_by模拟split():返回数据帧列表

我有一个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列表中提取这些名称的方法的奖励).

split r list dplyr

23
推荐指数
6
解决办法
2万
查看次数

在`dplyr`输出中添加行

在传统中plyr,返回的行会自动添加到输出中,即使它们超过了该分组的输入行数:

set.seed(1)
dat <- data.frame(x=runif(10),g=rep(letters[1:5],each=2))
> ddply( dat, .(g), function(df) df[c(1,1,1,2),] )
            x g
1  0.26550866 a
2  0.26550866 a
3  0.26550866 a
4  0.37212390 a
5  0.57285336 b
6  0.57285336 b
7  0.57285336 b
8  0.90820779 b
9  0.20168193 c
10 0.20168193 c
11 0.20168193 c
12 0.89838968 c
13 0.94467527 d
14 0.94467527 d
15 0.94467527 d
16 0.66079779 d
17 0.62911404 e
18 0.62911404 e
19 0.62911404 e
20 0.06178627 e
Run Code Online (Sandbox Code Playgroud)

我无法弄清楚如何做同样的事情dplyr.一些尝试:

dat …
Run Code Online (Sandbox Code Playgroud)

r split-apply-combine dplyr

6
推荐指数
1
解决办法
2994
查看次数

标签 统计

dplyr ×2

r ×2

list ×1

split ×1

split-apply-combine ×1