【发布时间】:2017-08-12 02:57:37
【问题描述】:
我有一个数据框,我需要为每 n 行计算 x 的平均值
通过分组名称,假设 n= 3
样本数据集df:
Name X
A 3.1
A 2.5
A 3.6
A 3.4
B 4.6
B 1.8
B 3.4
对于每个名称,前 3 行的平均值,然后是下 3 行的平均值,
如果最后
到目前为止,我已经能够分别对 3 行或名称进行分组。
任何有关如何暗示这两者在一起的帮助将不胜感激。
## by grouping 3 rows##
final1<-aggregate(df$X,list(rep(1(nrow(df)%/%n+1),each=n,len=nrow(df))),mean)[-1]
##by grouping name##
final2<- df %>% group_by(Name) %>% summarise(value=mean(df$X))
期望的输出是:
Name X
A 3.066
A 3.400
B 3.266
感谢您的帮助!
【问题讨论】:
-
您可以尝试在
df %>% group_by(Name) %>% mutate(idx = ceiling(seq_len(n())/3)) %>% group_by(idx, add=T) %>% summarise(value=mean(X))的脉络中添加一个辅助分组变量。 -
我已经尝试按 2 个变量进行分组,但没有奏效。感谢您的帮助