首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >找出群中的“顶N”,求R中“顶N”的平均值。

找出群中的“顶N”,求R中“顶N”的平均值。
EN

Stack Overflow用户
提问于 2022-08-11 02:47:40
回答 1查看 45关注 0票数 -2
代码语言:javascript
复制
       Rank       Laps   Average Time
1        1          1       30
2        2          1       34
3        3          1       35
4        1          2       32
5        2          2       33        
6        3          2       56
7        4          1       43
8        5          1       23
9        6          1       31
10       4          2       23
11       5          2       88
12       6          2       54

我想知道我如何能够分组排名1-3和4-6,并得到一个平均的“平均时间”的每一圈。另外,如果我有7-9组,10-13组,我也想把它延长.

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-08-11 02:58:59

一种选择是使用cut将不同的级别分组,并将Laps添加为分组变量。然后,您可以对数据进行summarize以获得mean

代码语言:javascript
复制
library(tidyverse)

df %>%
  group_by(gr = cut(Rank, breaks = seq(0, 6, by = 3)), Laps) %>%
  summarize(avg = mean(Average_Time))

输出

代码语言:javascript
复制
  gr     Laps   avg
  <fct> <int> <dbl>
1 (0,3]     1  33  
2 (0,3]     2  40.3
3 (3,6]     1  32.3
4 (3,6]     2  55  

如果要显示组的级别范围,则为另一个选项:

代码语言:javascript
复制
df %>%
  group_by(gr = cut(Rank, breaks = seq(0, 6, by = 3))) %>%
  mutate(Rank_gr = paste0(min(Rank), "-", max(Rank))) %>% 
  group_by(Rank_gr, Laps) %>% 
  summarize(avg = mean(Average_Time))

输出

代码语言:javascript
复制
  Rank_gr  Laps   avg
  <chr>   <int> <dbl>
1 1-3         1  33  
2 1-3         2  40.3
3 4-6         1  32.3
4 4-6         2  55  

由于您将有不均衡的组,所以您可能需要使用case_when来创建组:

代码语言:javascript
复制
df %>%
  group_by(gr=case_when(Rank %in% 1:3 ~ "1-3",
                        Rank %in% 4:6 ~ "4-6",
                        Rank %in% 7:9 ~ "7-9",
                        Rank %in% 10:13 ~ "10-13"), 
           Laps) %>%
  summarize(avg = mean(Average_Time))

数据

代码语言:javascript
复制
df <- structure(list(Rank = c(1L, 2L, 3L, 1L, 2L, 3L, 4L, 5L, 6L, 4L, 
5L, 6L), Laps = c(1L, 1L, 1L, 2L, 2L, 2L, 1L, 1L, 1L, 2L, 2L, 
2L), Average_Time = c(30L, 34L, 35L, 32L, 33L, 56L, 43L, 23L, 
31L, 23L, 88L, 54L)), class = "data.frame", row.names = c(NA, 
-12L))
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73314725

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档