【问题标题】:Pulling the average of one column based on multiple selections in another column根据另一列中的多项选择拉取一列的平均值
【发布时间】:2022-01-22 05:16:53
【问题描述】:

我有一个如下所示的数据集:

      x    y
1  0.850 85.0
2  0.855 85.5
3  0.860 86.0
4  0.865 86.5
5  0.870 87.0
6  0.875 87.5
7  0.880 88.0
8  0.885 88.5
9  0.890 89.0
10 0.895 89.5
11 0.900 90.0
12 0.905 90.5
13 0.910 91.0
14 0.915 91.5
15 0.920 92.0
16 0.925 92.5
17 0.930 93.0
18 0.935 93.5
19 0.940 94.0
20 0.945 94.5
21 0.950 95.0

structure(list(x = c(0.85, 0.855, 0.86, 0.865, 0.87, 0.875, 0.88, 
0.885, 0.89, 0.895, 0.9, 0.905, 0.91, 0.915, 0.92, 0.925, 0.93, 
0.935, 0.94, 0.945, 0.95), y = c(85, 85.5, 86, 86.5, 87, 87.5, 
88, 88.5, 89, 89.5, 90, 90.5, 91, 91.5, 92, 92.5, 93, 93.5, 94, 
94.5, 95)), class = "data.frame", row.names = c(NA, -21L))

我正在尝试根据 x 列中的一系列值提取 y 的平均值。例如,如果 x 大约为 0.86、0.90 和 0.91,我想构建的代码给出平均 y。我尝试构建的代码如下所示:

library(dplyr)

data%>%group_by(round(x,digits = 2)==c(0.86,0.90,0.91))%>%select(y)%>%
  summarise_each(funs(mean(., na.rm = TRUE)))

我得到的答案只是 group_by 语句真假的平均值。如何重新排列代码以便只获得我正在寻找的三个平均值 (0.86,0.90,0.91) 而不是真正的错误平均值?

【问题讨论】:

    标签: r dplyr average mean


    【解决方案1】:

    您可以在使用%in% 运算符执行summarise() 后过滤您正在寻找的平均值。

    library(tidyverse)
    
    data %>% 
      mutate(x = round(x, 2)) %>% 
      group_by(x) %>%
      summarise(across(everything(), mean)) %>% 
      filter(x %in% c(0.86, 0.90, 0.91))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-09-29
      • 1970-01-01
      • 2022-08-21
      • 1970-01-01
      相关资源
      最近更新 更多