因此,我正在试图找到一种方法来计算我的数据的特定值的ecdf. 我有一个数据框,看起来像这样:

Name      Type             Value 
B         pace_20min_ms    6M 2S
A         pace_20min_ms    5M 32S

所以我想做的是:找到ecdf的值,例如A,然后说:A比做过测试的65%的人快.但我正在挣扎的"价值",因为这是在这种lubridate格式分钟和秒.

到目前为止,我所知道的是如何计算特定的分位数:

quantile(dat$Value, probs = c(0.1, 0.25, 0.5, 0.75, 0.9), type = 1)
[1] "3M 57S" "4M 25S" "4M 56S" "5M 32S" "6M 2S"

也许反过来计算并不难,但我不知道该怎么做. 谢谢你!

推荐答案

你可以转换成秒,然后再转换成秒,比如:

> r <- colSums(sapply(strsplit(gsub('[MS]', '', x), ' '), as.integer)*c(60, 1)) |> 
+   quantile(probs=c(0.1, 0.25, 0.5, 0.75, 0.9), type=1)
> sprintf('%sM %sS', r %/% 60, r %% 60) |> setNames(names(r))
     10%      25%      50%      75%      90% 
"0M 20S" "1M 23S" "3M 24S"  "5M 5S" "6M 31S" 

不知道你的数据是如何准确格式化的,但你明白了.


Data:

> n <- 100
> set.seed(42)
> x <- mapply(\(x, y) sprintf('%sM %sS', x, y), 
+             sample(0:7, n, replace=TRUE), 
+             sample(0:34, n, replace=TRUE))

R相关问答推荐

Tidyverse/Djirr为从嵌套列表中提取的列名赋值的解决方案

基于shiny 应用程序中的日期范围子集xts索引

在R中替换函数中的特定符号

修改用R编写的用户定义函数

如果第一个列表中的元素等于第二个列表的元素,则替换为第三个列表的元素

将包含卷的底部25%的组拆分为2行

R中的时间序列(Ts)函数计数不正确

传递ggplot2的变量作为函数参数—没有映射级别以正确填充美学

有没有办法使用ggText,<;Sub>;&;<;sup>;将上标和下标添加到同一元素?

如何将使用rhandsontable呈现的表值格式化为百分比,同时保留并显示完整的小数精度?

我如何go 掉盒子图底部的数字?

如何在R中使用hmm TMB提前一步预测观察到的状态?

将列表中的字符串粘贴到R中for循环内的dplyr筛选器中

数值型数据与字符混合时如何进行绑定

防止正则表达式覆盖以前的语句

访问数据帧中未定义的列时出现R错误

TidyVerse中长度不等的列结合向量

如何在刻面和翻转堆叠条形图中对齐geom_text()

在鼠标悬停时使用Plotly更改geom_point大小

基于已有ID列创建唯一ID