我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的字的装置的装置, “知道如果我这就很清楚)。
我怎样才能得到这个没有一个做一个组?
用碱,使用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
假设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
含底座:
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)
而现在dplyr甚至更好...
require(dplyr)
tmp <- group_by(df, WORD)
df1 <- summarise(tmp,
count = n(),
mWLN = mean(WLN, na.rm = TRUE))
df1