我需要根据某些条件对数据框进行细分,例如mean()
和max()
。
这是我的数据框df,其中包含一个变量A
。
A
0
0
3
2
4
3
...
我需要为此列的每一行再创建两列mean
和max
预期产出
A mean max
0 0 0
0 0(mean(A[1], A[2])) 0(max(A[1], A[2]))
3 1(mean(A[1],A[2],A[3])) 3(max(A[1],A[2],A[3]))
2 1.25(mean(A[1],A[2],A[3],A[4])) 3(max(A[1],A[2],A[3],A[4]))
4 1.8(mean(A[1],A[2],A[3],A[4],A[5])) 4(max(A[1],A[2],A[3],A[4],A[5]))
3 2(mean(A[1],A[2],A[3],A[4],A[5],A[6])) 4(max(A[1],A[2],A[3],A[4],A[5],A[6]))
... ... ...
在R中执行此操作的最佳方式是什么?
答案 0 :(得分:3)
dplyr
包内置了许多累积功能。这是一个例子。
> library(dplyr)
> btest <- data.frame(a = c(0,0,3,4,2,3), b = rnorm(6))
> btest %>% mutate(mean = cummean(a), max = cummax(a))
a b mean max
1 0 -1.6028412 0.00 0
2 0 0.1953723 0.00 0
3 3 0.2022246 1.00 3
4 4 -0.2744182 1.75 4
5 2 0.3343044 1.80 4
6 3 0.2081762 2.00 4