得到的R手段子组的平均值得到的R手段子组的平均值(Get the means of sub grou

2019-05-12 09:14发布

我R的新手,我不知道怎么弄[R计算装置,该装置是一个亚组本身的手段分组的手段。 我会解释清楚。

我有这样一个数据帧:

GROUP WORD WLN
1     1    4
1     1    3
1     1    3
1     2    2
1     2    2
1     2    3
2     3    1
2     3    1
2     3    2
2     4    1
2     4    1
2     4    1
...   ...  ...

但真正的一个具有总共5组和25个字的(5个字的每个组;每一个字已经由5名受试者赋予了号码从1至4)。

我需要得到WLN的手段对每一个字,我可以做到这一点很容易与一个循环,并保存在一个向量的结果; 但然后我需要与根据组这些装置,该装置字属于的手段的矢量...所以我需要然后组2等...(I别组成的组1的字的装置的装置, “知道如果我这就很清楚)。

我怎样才能得到这个没有一个做一个组?

Answer 1:

用碱,使用aggregate

> aggregate(WLN~GROUP+WORD, mean, data=df)
  GROUP WORD      WLN
1     1    1 3.333333
2     1    2 2.333333
3     2    3 1.333333
4     2    4 1.000000

其中df是@Metrics'的数据。

另一种替代方法是使用summaryBy从doBy包

> library(doBy)
> summaryBy(WLN~GROUP+WORD, FUN=mean, data=df)
  GROUP WORD WLN.mean
1     1    1 3.333333
2     1    2 2.333333
3     2    3 1.333333
4     2    4 1.000000


Answer 2:

假设DF是你的数据框:

df<-structure(list(GROUP = c(1L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 
2L, 2L, 2L), WORD = c(1L, 1L, 1L, 2L, 2L, 2L, 3L, 3L, 3L, 4L, 
4L, 4L), WLN = c(4L, 3L, 3L, 2L, 2L, 3L, 1L, 1L, 2L, 1L, 1L, 
1L)), .Names = c("GROUP", "WORD", "WLN"), class = "data.frame", row.names = c(NA, 
-12L))

Plyr解决方案

install.packages("plyr")
library(plyr)
ddply(df,.(GROUP,WORD),summarize, meanwln=mean(WLN))
 GROUP WORD  meanwln
1     1    1 3.333333
2     1    2 2.333333
3     2    3 1.333333
4     2    4 1.000000

Data.table的解决方案:

install.packages("data.table")
library(data.table)
df<-data.table(df)
setkey(df,GROUP,WORD)
df[,list(meanwln=mean(WLN)),by="GROUP,WORD"]

 GROUP WORD  meanwln
1:     1    1 3.333333
2:     1    2 2.333333
3:     2    3 1.333333
4:     2    4 1.000000


Answer 3:

含底座:

with(df,tapply(WLN,list(GROUP,WORD),mean))

编辑:

如果您也想为上面的表行和colmeans,你可以这样做:

x <- with(df,tapply(WLN,list(GROUP,WORD),mean))
addmargins(x, margin = seq_along(dim(x)), FUN = mean, quiet = TRUE)


Answer 4:

而现在dplyr甚至更好...

require(dplyr)
tmp <- group_by(df, WORD)
df1 <- summarise(tmp, 
   count = n(), 
   mWLN = mean(WLN, na.rm = TRUE))
df1


文章来源: Get the means of sub groups of means in R