R 计算总体平均值,而不是平均值的平均值
我觉得这是一个非常简单的问题,我应该能够解决,但我已经尝试了一段时间,现在没有成功。我有一个数据帧,希望通过cond类型和speaker类型来确定总体平均rt,忽略位置。我该怎么做 简单地说,三组人读句子(“说话人”)。每个“cond”是一个不同的句子类型(“ExpA,B,C,D”),全部由5个部分(“Position”)组成。每个部分在每个句子类型中都有相应的阅读时间。我想看看每组每个cond(所有位置加在一起)的总阅读时间。例如,对于cond的FR参与者,所有位置阅读时间(0,1,2,3,4)的总和。”ExpA”来比较它们在“ExpA”中总体上比“ExpB”快还是慢 我该怎么做呢?我已经能够使用下面的代码通过位置、条件和说话人得到平均rt,但是当我删除“位置”时,我认为它会给我每个“秒”的组合平均值,它只给了我一个值,这个值太小了,不可能是5个平均值的和,而看起来是这些平均值的平均值R 计算总体平均值,而不是平均值的平均值,r,mean,R,Mean,我觉得这是一个非常简单的问题,我应该能够解决,但我已经尝试了一段时间,现在没有成功。我有一个数据帧,希望通过cond类型和speaker类型来确定总体平均rt,忽略位置。我该怎么做 简单地说,三组人读句子(“说话人”)。每个“cond”是一个不同的句子类型(“ExpA,B,C,D”),全部由5个部分(“Position”)组成。每个部分在每个句子类型中都有相应的阅读时间。我想看看每组每个cond(所有位置加在一起)的总阅读时间。例如,对于cond的FR参与者,所有位置阅读时间(0,1,2,3,4
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)
}