首页 > 解决方案 > Gather() 值的平均值

问题描述

我有一个最初使用gather() 函数操作的数据集。我现在正在尝试在收集的数据中创建组的平均值。我在理解创建此处提供的数据平均值的最佳方法时遇到问题。我希望创建一个与每个组相关的平均值。在这里,我正在平均“观察者”的分数。

编辑:我需要每个观察者在所有观察日期的平均值。

EDIT-2:每个观察者都有他们将要评估的任意数量的个人。如果我使用 group_by(observer) 平均值将是所有观察值的总数,而不是观察者的平均值。

EDIT-3:我希望看到每个观察日期的平均值“保真度分数”。如果我有 3 个分数(90,100,120),我希望看到归因于观察者的这些值的平均值,但仍然能够随着时间的推移显示分数。我希望的输出是:

在此处输入图像描述

重要提示:我的保真度分数都满分 129 分

EDIT-4:我想平均观察者分数超过观察计数(date_of_observation)

这是我用来创建平均值的函数。

LPLC_Group %>%
  group_by(observer,date_of_observation)%>%
  summarize(fidelity_score = sum(value,na.rm=TRUE),
        average_fidelity = round(mean(fidelity_score,na.rm=TRUE),2))

以下 dput 与上述函数的输出有关。我无法发布我的完整数据集。此函数的输出应该足以使用。

输入输出:

structure(list(observer = c("Cristianne", "Cristianne", "Cristianne", 
"Deb", "Deb", "Deb", "Lori", "Lori", "Lori", "Pauline", "Pauline", 
"Pauline"), date_of_observation = c("6/24/19", "7/24/19", "8/24/19", 
"6/24/19", "7/24/19", "8/24/19", "6/24/19", "7/24/19", "8/24/19", 
"6/24/19", "7/24/19", "8/24/19"), fidelity_score = c(100L, 87L, 
95L, 89L, 106L, 98L, 85L, 104L, 102L, 94L, 85L, 113L), average_fidelity = c(100, 
87, 95, 89, 106, 98, 85, 104, 102, 94, 85, 113)), row.names = c(NA, 
-12L), class = c("grouped_df", "tbl_df", "tbl", "data.frame"), groups = structure(list(
    observer = c("Cristianne", "Deb", "Lori", "Pauline"), .rows = list(
        1:3, 4:6, 7:9, 10:12)), row.names = c(NA, -4L), class = c("tbl_df", 
"tbl", "data.frame"), .drop = TRUE))

标签: rdplyr

解决方案


library(dplyr)
LPLC_Group %>%
  group_by(observer) %>%
  mutate(average_fidelity = mean(fidelity_score))
# A tibble: 12 x 4
# Groups:   observer [4]
   observer   date_of_observation fidelity_score average_fidelity
   <chr>      <chr>                        <int>            <dbl>
 1 Cristianne 6/24/19                        100             94  
 2 Cristianne 7/24/19                         87             94  
 3 Cristianne 8/24/19                         95             94  
 4 Deb        6/24/19                         89             97.7
 5 Deb        7/24/19                        106             97.7
 6 Deb        8/24/19                         98             97.7
 7 Lori       6/24/19                         85             97  
 8 Lori       7/24/19                        104             97  
 9 Lori       8/24/19                        102             97  
10 Pauline    6/24/19                         94             97.3
11 Pauline    7/24/19                         85             97.3
12 Pauline    8/24/19                        113             97.3

如果你得到的输出与我的输入不匹配,那么你可能已经屈服于Loading plyrafterdplyr和 ignoring the warning的错误。我建议重新启动 R 并小心加载plyr dplyr如果有的话)。


推荐阅读