首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将函数应用于R中data.frame中的组

将函数应用于R中data.frame中的组
EN

Stack Overflow用户
提问于 2012-05-18 08:05:59
回答 4查看 13.5K关注 0票数 14

我正在尝试获取数据帧内组("a“和"b")的变量(v)的累积和。如何才能将底部的结果放入我的数据帧的列cs中?

代码语言:javascript
复制
> library(nlme)
> g <- factor(c("a","b","a","b","a","b","a","b","a","b","a","b"))
> v <- c(1,4,1,4,1,4,2,8,2,8,2,8)
> cs <- rep(0,12)
> d <- data.frame(g,v,cs)

> d
   g v cs
1  a 1 0
2  b 4 0
3  a 1 0
4  b 4 0
5  a 1 0
6  b 4 0
7  a 2 0
8  b 8 0
9  a 2 0
10 b 8 0
11 a 2 0
12 b 8 0

> r=gapply(d,FUN="cumsum",form=~g, which="v")
>r

$a     
   v   
1  1   
3  2   
5  3  
7  5  
9  7  
11 9  

$b    
    v 
2   4 
4   8 
6  12 
8  20 
10 28 
12 36 

> str(r)
List of 2
 $ a:'data.frame':  6 obs. of  1 variable:
  ..$ v: num [1:6] 1 2 3 5 7 9
 $ b:'data.frame':  6 obs. of  1 variable:
  ..$ v: num [1:6] 4 8 12 20 28 36

我想我可以想出一些费力的方法将这些数据帧中的数据放到d$cs中,但我遗漏了一些简单的调整。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2012-05-18 08:35:41

我会使用ave。如果你看一下ave的源代码,你会发现它基本上包装了Martin Morgan的solution

代码语言:javascript
复制
R> g <- factor(c("a","b","a","b","a","b","a","b","a","b","a","b"))
R> v <- c(1,4,1,4,1,4,2,8,2,8,2,8)
R> d <- data.frame(g,v)
R> d$cs <- ave(v, g, FUN=cumsum)
R> d
   g v cs
1  a 1  1
2  b 4  4
3  a 1  2
4  b 4  8
5  a 1  3
6  b 4 12
7  a 2  5
8  b 8 20
9  a 2  7
10 b 8 28
11 a 2  9
12 b 8 36
票数 10
EN

Stack Overflow用户

发布于 2012-05-18 08:15:48

split<-是个很奇怪的怪兽

代码语言:javascript
复制
split(d$cs, d$g) <- lapply(split(d$v, d$g), cumsum)

导致

代码语言:javascript
复制
> d
   g v cs
1  a 1  1
2  b 4  4
3  a 1  2
4  b 4  8
5  a 1  3
6  b 4 12
7  a 2  5
8  b 8 20
9  a 2  7
10 b 8 28
11 a 2  9
12 b 8 36
票数 13
EN

Stack Overflow用户

发布于 2012-05-18 08:13:20

我选择的工具是plyr包:

代码语言:javascript
复制
require(plyr)
> ddply(d,.(g),transform,cs = cumsum(v))
   g v cs
1  a 1  1
2  a 1  2
3  a 1  3
4  a 2  5
5  a 2  7
6  a 2  9
7  b 4  4
8  b 4  8
9  b 4 12
10 b 8 20
11 b 8 28
12 b 8 36
票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10645100

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档