【发布时间】:2020-01-15 16:08:45
【问题描述】:
我有以下示例 df,来自 20m 冲刺测试运动员的分段时间。他们做了 3 次试验。我想为每个拆分创建新列,平均他们两个最快的试验(放弃最慢的试验)。
这是 df 的示例:
Athlete 0_10m_1 10_20m_1 0_20m_1 0_10m_2 10_20m_2 0_20m_2 0_10m_3 10_20m_3 0_20m_3
1 Athlete 1 2.005 1.320 3.325 1.904 1.306 3.210 1.993 1.316 3.309
2 Athlete 2 1.967 1.383 3.350 1.931 1.391 3.322 2.005 1.399 3.404
3 Athlete 3 2.008 1.381 3.389 2.074 1.365 3.439 2.047 1.408 3.455
4 Athlete 4 1.817 1.286 3.103 1.924 1.285 3.209 NA NA NA
最终结果将是 3 个新列,其中包含 2 次最快试验的平均值(基于 0_20m 时间)(“Avg_0_10m”、“Avg_10_20m”、Avg_0_20m”)。理想情况下,该解决方案足以处理 NA 值因为数据集中会有一些。
关于如何解决这个问题的任何建议?我不确定如何能够用相关的分段时间过滤出最慢的 0_20m 试验并平均其他试验。
【问题讨论】:
-
到目前为止你尝试了什么?
-
老实说,我有点迷失了从哪里开始。我还不是很擅长R。例如,我知道如何使用 apply: apply(df[,c("0_20m_1", "0_20m_2", "0_20m_3")], 1, max) 来定位最大值。这将返回我想要过滤掉的最大值,但我如何将它们“连接”到同一试验的 0_10m 和 10_20m?我想我需要让它成为 TRUE/FALSE,而不是先返回值。那么我可以使用 if 语句吗?即如果为 TRUE,则不包含在均值函数中。
标签: r filter max multiple-columns mean