【问题标题】:Error using summarize function in R using a custom statistic使用自定义统计在 R 中使用汇总函数时出错
【发布时间】:2020-09-10 16:54:17
【问题描述】:

我正在尝试为我的数据中的每个组计算一些称为 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 参数“数据”丢失,没有默认值 ℹ 输入farFAR()。 ℹ 第1组出现错误:random_participant_ID = "2X2DPZG20H"。 运行rlang::last_error() 看看哪里出错了。

如果我将数据框作为参数传递:

subjects_no_imagery %>% group_by(random_participant_ID) %>% dplyr::summarize(FAR = FAR(subjects_no_imagery))

然后它运行没有错误,但我得到了这个输出,而不是每个参与者都有不同的 RAF,所有 FAR 都是相同的(并且等于所有参与者的平均值):

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 统计数据?

【问题讨论】:

    标签: r dplyr group-by summarize


    【解决方案1】:

    问题在于 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)
    

    【讨论】:

      猜你喜欢
      • 2021-08-13
      • 2020-10-16
      • 1970-01-01
      • 1970-01-01
      • 2014-01-15
      • 1970-01-01
      • 2016-11-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多