问题描述
我正在尝试为数据中的每个组计算一些称为FAR的统计信息。我写了一个用于计算统计量的函数,它看起来像这样:
FAR <- function(data){
FAs = sum(data$response %in% c(0,1) & data$correct_response=="No")
NF = sum(data$correct_response=="No")
return(FAs/NF)
}
我的数据框称为Subjects_no_imagery,并且我希望将其分组为random_participant_ID。然后,我想计算每个组的FAR,如下所示:
subjects_no_imagery %>% group_by(random_participant_ID) %>% dplyr::summarize(far = FAR())
我一直收到以下错误:
subjects_no_imagery%>%group_by(random_participant_ID)%>%dplyr :: summarize(far = FAR()) 错误:
summarise()
输入far
有问题。 x参数“数据”丢失,没有默认值 ℹ输入far
为FAR()
。 in错误发生在组1中:random_participant_ID =“ 2X2DPZG20H”。 运行rlang::last_error()
以查看错误发生的位置。
如果我将数据框作为参数传递:
subjects_no_imagery %>% group_by(random_participant_ID) %>% dplyr::summarize(FAR = FAR(subjects_no_imagery))
然后它运行没有错误,但是我得到以下输出:所有FAR都相同(并且等于所有参与者的平均值),而不是每个参与者都有不同的RAF:
random_participant_ID FAR
<chr> <dbl>
1 2X2DPZG20H 0.196
2 4GF789C0F0 0.196
3 93JKYDEZVY 0.196
4 9J9QM4C7LV 0.196
命令
subjects_no_imagery %>% group_by(random_participant_ID) %>% dplyr::summarize(FAR = FAR(subjects_no_imagery %>% group_by(random_participant_ID)))
也会产生相同的结果。
有什么想法可以获取每个组的FAR统计信息吗?
谢谢。
解决方法
问题在于FAR函数需要一个数据集,并且汇总仅适用于仅使用列的函数。
相反,我应该执行以下操作:
subjects_no_imagery_stats <- subjects_no_imagery %>% group_by(random_participant_ID) %>%
summarize(FAs = sum(response %in% c(0,1) & correct_response=="No"),NF = sum(correct_response=="No"),FA_rate = FAs/NF)