【问题标题】:How to calculate mean by row for multiple groups using dplyr in R?如何使用 R 中的 dplyr 按行计算多个组的平均值?
【发布时间】:2021-09-27 20:30:21
【问题描述】:

我有一个包含 4 列 AgeLocationDistanceValue 的数据框。 AgeLocation 每个都有两个可能的值,而 Distance 可以有三个。 Value 是观察到的连续变量,每个 Distance 测量了 3 次。

考虑到AgeLocation,我想计算其中一个Distance 值的平均值,然后在组合其他两个Distance 时计算另一个平均值Value。我试图回答,Distance 0.5 相对于 Distance 1.5 和 2.5 对于每个 AgeLocation 的平均值是什么?

如何使用 dplyr 做到这一点?

示例数据

library(dyplyr)

set.seed(123)
df1 <- data.frame(matrix(ncol = 4, nrow = 36))
x <- c("Age","Location","Distance","Value")
colnames(df1) <- x
df1$Age <- rep(c(1,2), each = 18)
df1$Location <- as.character(rep(c("Central","North"), each = 9))
df1$Distance <- rep(c(0.5,1.5,2.5), each = 3)
df1$Value <- round(rnorm(36,200,25),0)

输出应该是这样的

  Age Location Mean_0.5 Mean_1.5_and_2.5
1   1  Central      206              202
2   1    North      210              201
3   2  Central      193              186
4   2    North      202              214

【问题讨论】:

    标签: r dplyr


    【解决方案1】:

    我们可以使用%in%==在按“年龄”、“位置”分组后根据“距离”值(假设精度正确)对“值”进行子集化

    library(dplyr)
    df1 %>%
         group_by(Age, Location) %>% 
         summarise(Mean_0.5 = mean(Value[Distance == 0.5]), 
            Mean_1.5_and_2.5 = mean(Value[Distance %in% c(1.5, 2.5)]),
            .groups = 'drop')
    

    -输出

    # A tibble: 4 × 4
        Age Location Mean_0.5 Mean_1.5_and_2.5
      <dbl> <chr>       <dbl>            <dbl>
    1     1 Central      206.             202.
    2     1 North        210.             201.
    3     2 Central      193              186.
    4     2 North        202.             214.
    

    【讨论】:

      猜你喜欢
      • 2018-03-21
      • 1970-01-01
      • 2012-04-05
      • 2017-10-25
      • 2020-10-10
      • 2016-11-19
      • 1970-01-01
      • 1970-01-01
      • 2019-07-19
      相关资源
      最近更新 更多