gpt4 book ai didi

r - 在 R 中使用过滤器功能。需要为赛马数据库分配 NA 并保持数据集的长度相同

转载 作者:行者123 更新时间:2023-12-04 00:56:07 24 4
gpt4 key购买 nike

我对这个小组和 R 还是个新手。我在上次查询时收到了一些非常有用的反馈,希望我能得到更多支持如下:

我正在研究赛马数据库,现阶段有 4 个变量:赛马编号、比赛编号、比赛距离和分配给马匹的评级 (DaH)比赛的表现。

数据集:

horse_ratings <- tibble(
horse=c(1,1,1,2,2,2,3,3,3),
raceid=c(1,2,3,1,2,3,1,2,3),
Dist=c(9.47,9.47,10,10.1,10.2,9,11,9.47,10.5),
DaH=c(101,99,103,101,94,87,102,96,62)
)

给予:

> horse_ratings
# A tibble: 9 x 4
horse raceid Dist DaH
<dbl> <dbl> <dbl> <dbl>
1 1 1 9.47 101
2 1 2 9.47 99
3 1 3 10 103
4 2 1 10.1 101
5 2 2 10.2 94
6 2 3 9 87
7 3 1 11 102
8 3 2 9.47 96
9 3 3 10.5 62

我将对数据集执行一些计算,例如平均评分、最大评分等which id like to result in a number of vectors of equal length.

我正在使用过滤功能来查看不同的性能评级比赛距离(即距离大于 10 开始)。但是,如果其中一匹马没有跑完那个距离的比赛然后我注意到结果不包括那个输出中的马。即:

> horse_ratings %>% 
+ group_by(horse) %>%
+ filter(Dist>10) %>%
+ summarise(mean_rating=mean(DaH))
`summarise()` ungrouping output (override with `.groups` argument)
# A tibble: 2 x 2
horse mean_rating
<dbl> <dbl>
1 2 97.5
2 3 82

所以马 1 已经消失了,因为它没有跑过距离大于 10 的比赛。我需要理想地保持长度为 3 的输出向量,以便我可以进行所有计算进入相同长度的数据帧(用于我的最终数据输出/打印输出)。我希望有一种方法可以为马 1 分配一个 NA 或类似的输出给予:

# A tibble: 2 x 2
horse mean_rating
<dbl> <dbl>
1 1 NA
2 2 97.5
3 3 82

或者类似的解决方案。帮助将不胜感激!

最佳答案

您可以在 group_by() 中使用 .drop = FALSE 参数:

horse_ratings %>%
group_by(horse, .drop = FALSE) %>%
filter(Dist > 10) %>%
summarise(mean_rating = mean(DaH))

horse mean_rating
<dbl> <dbl>
1 1 NaN
2 2 97.5
3 3 82

关于r - 在 R 中使用过滤器功能。需要为赛马数据库分配 NA 并保持数据集的长度相同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62438153/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com