我有一個看起來像這樣的資料集:
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) 而不是真正的錯誤平均值?
uj5u.com熱心網友回復:
您可以在summarise()與%in%操作員一起執行后過濾您正在尋找的平均值。
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))
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/388517.html
上一篇:將列名作為公式中的函式引數傳遞
下一篇:反序列化JSON嵌套字典
