首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >R中均值子群的均值

R中均值子群的均值
EN

Stack Overflow用户
提问于 2013-09-22 14:04:20
回答 4查看 3.2K关注 0票数 1

我是R的新手,我不知道如何得到R,计算一个均值子群的均值,这是一个子群本身的均值。我会解释得更清楚。

我有这样一个数据框架:

代码语言:javascript
复制
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个单词,每个单词被分配一个1到4个的数字,5被试…)。

我需要得到WLN的每一个单词的手段,我可以很容易地用一个循环,并将结果保存在一个向量;但是,然后我需要一个向量与这些手段的手段,根据该词所属的组。所以我需要第一组,然后第二组的词汇的手段,等等。(我不知道我是否在说清楚)。

我怎么能不一个一个地做这件事呢?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2013-09-22 15:26:08

与base一起使用aggregate

代码语言:javascript
复制
> 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

代码语言:javascript
复制
> 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
票数 5
EN

Stack Overflow用户

发布于 2013-09-22 14:08:27

假设df是您的数据文件:

代码语言:javascript
复制
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溶液

代码语言:javascript
复制
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解决方案:

代码语言:javascript
复制
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
票数 2
EN

Stack Overflow用户

发布于 2013-09-22 14:10:29

基地:

代码语言:javascript
复制
with(df,tapply(WLN,list(GROUP,WORD),mean))

编辑:

如果您还希望对上面的表使用行和逗号,您可以这样做:

代码语言:javascript
复制
x <- with(df,tapply(WLN,list(GROUP,WORD),mean))
addmargins(x, margin = seq_along(dim(x)), FUN = mean, quiet = TRUE)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18944668

复制
相关文章

相似问题

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