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

R中均值群的均值
EN

Stack Overflow用户
提问于 2015-05-25 21:12:16
回答 1查看 232关注 0票数 0

我有以下数据

Exp =我的数据帧

代码语言:javascript
复制
dt<-data.table(Game=c(rep(1,9),rep(2,3)),
               Round=rep(1:3,4),
               Participant=rep(1:4,each=3),
               Left_Choice=c(1,0,0,1,1,0,0,0,1,1,1,1),
               Total_Points=c(5,15,12,16,83,7,4,8,23,6,9,14))

> dt
    Game Round Participant Left_Choice Total_Points
 1:    1     1           1           1            5
 2:    1     2           1           0           15
 3:    1     3           1           0           12
 4:    1     1           2           1           16
 5:    1     2           2           1           83
 6:    1     3           2           0            7
 7:    1     1           3           0            4
 8:    1     2           3           0            8
 9:    1     3           3           1           23
10:    2     1           4           1            6
11:    2     2           4           1            9
12:    2     3           4           1           14

现在,我需要做以下几点:

  1. 首先,对于每届奥运会的每一位参与者,我都需要计算出平均“左选择率”。
  2. 在此之后,我想将结果分成5组(左选择< 20%,左选择在20%到40%之间),
  3. 对于每一组(在每一场比赛中),我想在最后一轮中计算出均值 of Total_Points *在这个简单的例子中,*只有第3轮的值--例如,对于参与者1,在第3轮中,总分是12。对于参与者4,在第2场,是14。

因此,在第一阶段,我认为我应该计算以下几点:

代码语言:javascript
复制
Game Participant Percent_left    Total_Points (in last round) 

1        1           33%            12
1        2           66%            7 
1        3           33%            23   
2        4           100%           14

最终结果应该是这样的:

代码语言:javascript
复制
Game  Left_Choice Total_Poins (average)    
    1         >35%                   17.5= (12+23)/2
    1     <35%<70%                   7
    1         >70%                   NA
    2         >35%                   NA
    2     <35%<70%                   NA
    2         >70%                   14 

请帮助!:)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-05-26 01:48:14

data.table工作

1:具有by的简单群均值

代码语言:javascript
复制
dt[,pct_left:=mean(Left_Choice),by=.(Game,Participant)]

2:使用cut;不完全清楚,但我认为您需要include.lowest=T

代码语言:javascript
复制
dt[,pct_grp:=cut(pct_left,breaks=seq(0,1,by=.2),include.lowest=T)]

3:稍微复杂一些的群体平均为by

代码语言:javascript
复制
dt[Round==max(Round),end_mean:=mean(Total_Points),by=.(pct_grp,Game)]

(如果您只想要精简的表,请改用.(end_mean=mean(Total_Points)))。

您没有明确说明是否存在全局最大轮数(即,是否所有游戏都以相同的轮数结束);这是在上面假设的。为了提供一个确切的替代方案,您必须更清楚地了解这一点,但我建议从逐轮定义它开始:

代码语言:javascript
复制
dt[,end_mean:=mean(Total_Points),by=.(pct_grp,Game,Round)]
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30446067

复制
相关文章

相似问题

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