【问题标题】:How do I average by specific columns如何按特定列进行平均
【发布时间】:2019-06-10 23:08:31
【问题描述】:
如何计算每个问题参与者的平均响应时间(行是参与者,列是正确答案和响应时间)。我可以对单个列执行此操作,但我不知道如何遍历所有列并将答案放入新表中。
最后我想要一个表格,显示每个问题的平均响应时间和正确答案的百分比。
我可以找到每个问题的中位数以及每个问题的正确答案百分比,但我可以遍历数据集,以便整理这些统计数据的汇总表。
new_Data <- data[ , grepl( "correct|time" , names( data ) ) ]
【问题讨论】:
标签:
r
group-by
average
data-processing
【解决方案1】:
如果我正确理解您的问题,这个 tidyverse 解决方案可能会满足您的需求。它根据正则表达式选择列并计算所有列的平均值。如果没有,请提供您所需输出的示例。祝你好运!
library(tidyverse)
mtcars %>%
select(matches(".*p$|.*t$")) %>% #regex example: ends in "p" or ends in "t"
summarise_all(mean, na.rm = T)
disp hp drat wt
1 230.7219 146.6875 3.596563 3.21725
【解决方案2】:
这就是你正在寻找的东西
sapply( mtcars[ , grepl( "a|wt" , names( mtcars ) ) ], quantile, .5 )
或作为循环
A<- NULL
for( i in grep( "a|wt" , names( mtcars ) , value=T )){
A <- rbind( A ,
data.frame( vars=i , medain=quantile( mtcars[ , i ] , .5 )))
}
A