R 计算总体平均值,而不是平均值的平均值

R 计算总体平均值,而不是平均值的平均值,r,mean,R,Mean,我觉得这是一个非常简单的问题,我应该能够解决,但我已经尝试了一段时间,现在没有成功。我有一个数据帧,希望通过cond类型和speaker类型来确定总体平均rt,忽略位置。我该怎么做 简单地说,三组人读句子(“说话人”)。每个“cond”是一个不同的句子类型(“ExpA,B,C,D”),全部由5个部分(“Position”)组成。每个部分在每个句子类型中都有相应的阅读时间。我想看看每组每个cond(所有位置加在一起)的总阅读时间。例如,对于cond的FR参与者,所有位置阅读时间(0,1,2,3,4

我觉得这是一个非常简单的问题,我应该能够解决,但我已经尝试了一段时间,现在没有成功。我有一个数据帧,希望通过cond类型和speaker类型来确定总体平均rt,忽略位置。我该怎么做

简单地说,三组人读句子(“说话人”)。每个“cond”是一个不同的句子类型(“ExpA,B,C,D”),全部由5个部分(“Position”)组成。每个部分在每个句子类型中都有相应的阅读时间。我想看看每组每个cond(所有位置加在一起)的总阅读时间。例如,对于cond的FR参与者,所有位置阅读时间(0,1,2,3,4)的总和。”ExpA”来比较它们在“ExpA”中总体上比“ExpB”快还是慢

我该怎么做呢?我已经能够使用下面的代码通过位置、条件和说话人得到平均rt,但是当我删除“位置”时,我认为它会给我每个“秒”的组合平均值,它只给了我一个值,这个值太小了,不可能是5个平均值的和,而看起来是这些平均值的平均值

pcsmeans = ddply(subj.means, .(cond, position, speaker), summarise, sd = sd(mean.rt), mean = mean(mean.rt))

我希望缺少正确的数据帧不会让人不快,我不知道如何在这里输入这些数据帧。非常感谢您的帮助!

不清楚您想要什么,但看起来您可以使用
dplyr
分组依据
总结

library(dplyr)
df <- data.frame(Speaker =  rep(c("FR", "EN", "KR"),20),
       cond =  rep(c("ExpA", "ExpB", "ExpC", "ExpD"),15),
       Position = rep(c(0, 1, 2, 3, 4),12),
       rt = runif(min=1000, max=2000, n = 60))

df %>% group_by(Speaker, cond) %>% summarise(mean_rt = mean(rt), overall_rt = sum(rt))
库(dplyr)
df%分组依据(演讲者、主持人)%>%总结(平均值=平均值(rt),总体值=总和(rt))
这将按说话人和条件给出平均值和总和:

# A tibble: 12 x 4
# Groups:   Speaker [3]
Speaker cond  mean_rt overall_rt
<fct>   <fct>   <dbl>      <dbl>
1 EN      ExpA    1690.      8449.
2 EN      ExpB    1625.      8127.
3 EN      ExpC    1588.      7940.
4 EN      ExpD    1475.      7375.
5 FR      ExpA    1321.      6603.
6 FR      ExpB    1584.      7922.
7 FR      ExpC    1493.      7465.
8 FR      ExpD    1463.      7315.
9 KR      ExpA    1393.      6965.
10 KR      ExpB    1540.      7702.
11 KR      ExpC    1569.      7847.
12 KR      ExpD    1570.      7849.
#一个tible:12 x 4
#分组:发言者[3]
扬声器条件平均值\u rt总体\u rt
1 EN ExpA 1690.8449。
2 EN ExpB 1625.8127。
3 EN ExpC 1588.7940。
4 EN ExpD 1475.7375。
《联邦公报》第5卷第1321.6603页。
6 FR ExpB 1584.7922。
7 FR ExpC 1493.7465。
8 FR ExpD 1463.7315。
9 KR ExpA 1393.6965。
10 KR ExpB 1540.7702。
11 KR EXPC1569.7847。
12克朗出口1570.7849。

不太清楚您的实际问题是什么。因为您已经提到您不知道如何添加示例data.frame,我想下面是一个适合您的问题的示例:

#generate mock df
speaker<-c("FR", "EN", "KR")
exp<-c("ExpA", "ExpB", "ExpC", "ExpD")
position<-c(0, 1, 2, 3, 4)
#rt<- 1000, 1500, 2000, 1500, 1000
data<-expand.grid(speaker,exp,position)
names(data)<-c('speaker','exp','position')
data$rt<-rnorm(n=nrow(data),mean = 1300,sd = 250)
head(data)

speaker  exp    position  rt
FR       ExpA   0         1269
EN       ExpA   0         859
KR       ExpA   0         863
FR       ExpB   0         718
EN       ExpB   0         956
KR       ExpB   0         867
...
显然,R在解决问题时有一百万个工具,但这是我迄今为止最喜欢的。对于任何更复杂的东西(如自定义函数等),我可能会使用一个For循环,循环遍历每个reader和exp组合:

data$identifier <- paste0(data$speaker,data$exp) # helper column
results <- data.frame()
for ( ident in unique(data$identifier) ){
  df <- subset(data, identifier == ident)
  speaker<-unique(df$speaker)
  exp<-unique(df$exp)
  
  mean<-sum( df$rt )  
  se<-sd( df$rt )/ sqrt( nrow(df) )
  quantileButTransformed <- t(as.data.frame(quantile(df$rt))) #whatever you can think of
  
  newLine<-data.frame(speaker = speaker, exp = exp,N = nrow(df), mean = mean, se = se, quantile = quantileButTransformed)
  results <- rbind(results, newLine)
}

data$identifier感谢您的回复!我要查找的内容与您的回复内容非常接近。它肯定是通过cond将其隔离的,我一直在查找,但似乎仍然是一种平均值。`cond mean_rt total_rt 1 ExpA 1061.295007 2 ExpB 1064.292615 3 ExpC 1096.304693 4 ExpD 1111。297681 `我想要的是每个说话人组每秒钟0-4个位置的组合平均值。所以(ExpA的pos0的所有值的平均值)加上(ExpA的pos1的所有值的平均值)加上(ExpA的pos2的所有值的平均值)等等。如果这有帮助的话?那么这个?
df%>%group\u by(说话人,cond,Position)%>%总结(mean\u rt=mean(rt))%%>%groupby(Speaker,cond)%%>%summary(sum\u mean\u rt=sum(mean\u rt))
这是很多信息!感谢您向我展示如何添加示例数据帧!我试图找到的是每个说话人每个条件下的平均总句子阅读时间。每个句子花费每个组阅读的总时间(作为每个句子中pos0-4的平均rts之和。说话人的平均RTEXPA FR=5000ms(平均rts pos0-4之和)
require(sqldf)
sqldf::sqldf('select count(*) as N, speaker, exp, avg(rt) as mean from df group by speaker, exp')
data$identifier <- paste0(data$speaker,data$exp) # helper column
results <- data.frame()
for ( ident in unique(data$identifier) ){
  df <- subset(data, identifier == ident)
  speaker<-unique(df$speaker)
  exp<-unique(df$exp)
  
  mean<-sum( df$rt )  
  se<-sd( df$rt )/ sqrt( nrow(df) )
  quantileButTransformed <- t(as.data.frame(quantile(df$rt))) #whatever you can think of
  
  newLine<-data.frame(speaker = speaker, exp = exp,N = nrow(df), mean = mean, se = se, quantile = quantileButTransformed)
  results <- rbind(results, newLine)
}