r - 计算R中最佳表现的年龄

标签 r filter aggregate

<分区>

我有一个关于几年赛马成绩的数据集,我想计算马匹达到最佳成绩的年龄。这是我的数据的虚构示例:

data <- data.frame(
Name=c(rep("Ari",3),rep("Aegir",3),rep("Lixhof",3)),
Competition.year = c("2015", "2013", "2012", "2008", "2009", "2010", "2015", "2016", "2017"), 
P2=c(7.97, 8.40, 8.51, 9.49, 8.70, 8.40, 8.82, 9.07, 8.59),
Competition.age=c(16,14,13,8,9,10,12,13,14))

这里,P2 是时间记录的变量。值越小,性能越好(我正在寻找最快的时间来计算峰值性能)。比赛年龄显示每匹马参加比赛的每一年的年龄(以岁为单位)。

我的真实数据对 127 匹马进行了大约 2000 次观察。我想要的是计算他们达到最佳表现时的平均年龄(例如,一般来说,马在几岁时最快)。我看过一些帖子使用 aggregate 来按组计算均值,但我认为这并不是我所需要的,因为它必须先查看时间,然后再对从最快的年龄开始。

我将不胜感激!谢谢!

最佳答案

鉴于您的示例,您可以使用类似这样的东西。

library(dplyr)

df_min <- df %>% 
  group_by(Name) %>% 
  filter(P2 == min(P2)) # filter records on fastest race time per horse

mean(df_min$Competition.age)
[1] 13.33333

正如@MKR 指出的那样,您也可以在一条语句中完成。打字稍微多一点,您没有 df_min 的中间结果。这完全取决于您还想用现有数据做什么。

df_min <- df %>% 
  group_by(Name) %>% 
  filter(P2 == min(P2)) %>% 
  ungroup() %>% 
  summarise(best_age = mean(Competition.age)) 

关于r - 计算R中最佳表现的年龄,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50085475/

相关文章:

regex - r 删除带有数字的行

javascript - 纯javascript,过滤框无法正确过滤

javascript - 计算javascript对象数组中重复项的平均值

r - 使用 cowplot 将绘图拼凑在一起时的颜色渐变不正确

r - 如何为 R 中散点图中的类赋予颜色?

r - 有没有简单的方法可以在 ggplot 中设置垂直或水平线的限制?

filter - IcCube - 没有滚动条且元素数量有限的树过滤器

ios - 如何过滤 UITableView 中的所有部分以获取想要的项目

elasticsearch - ES : Bucket agg + top_hits + scroll? 如何返回桶中的所有命中(超过 `size+from` 最大值)?

c++ - 我可以在 "too few initializers"上导致编译错误吗?