R:根据距离列计算圈数

标签 r dplyr tidyverse

我有一个包含比赛信息的数据框,其中一列显示汽车在特定时间点行驶的距离。它看起来像这样:

data.frame(id = rep(c("A"), each = 15), 
           distance = seq(from = 1, to = 20, length.out = 15))

   id  distance 
1   A  1.000000   
2   A  2.357143   
3   A  3.714286   
4   A  5.071429   
5   A  6.428571   
6   A  7.785714   
7   A  9.142857   
8   A 10.500000   
9   A 11.857143   
10  A 13.214286   
11  A 14.571429   
12  A 15.928571   
13  A 17.285714   
14  A 18.642857   
15  A 20.000000   

如果我知道一圈是 5 个单位,我想创建一个新列,根据行驶距离来说明每个数据点的圈数。结果应如下所示:

data.frame(id = rep("A", each = 15), 
           distance = seq(from = 1, to = 20, length.out = 15), 
           lap = c(1,1,1,2,2,2,2,3,3,3,3,4,4,4,4))

   id  distance lap
1   A  1.000000   1
2   A  2.357143   1
3   A  3.714286   1
4   A  5.071429   2
5   A  6.428571   2
6   A  7.785714   2
7   A  9.142857   2
8   A 10.500000   3
9   A 11.857143   3
10  A 13.214286   3
11  A 14.571429   3
12  A 15.928571   4
13  A 17.285714   4
14  A 18.642857   4
15  A 20.000000   4

我该怎么做,最好使用 tidyverse?

最佳答案

这是一个整数除法问题。只需将距离除以 5,然后取 ceiling,将其四舍五入为最接近的整数。这将为您提供当前圈数:

dplyr::mutate(df, lap = ceiling(distance/5))

   id  distance lap
1   A  1.000000   1
2   A  2.357143   1
3   A  3.714286   1
4   A  5.071429   2
5   A  6.428571   2
6   A  7.785714   2
7   A  9.142857   2
8   A 10.500000   3
9   A 11.857143   3
10  A 13.214286   3
11  A 14.571429   3
12  A 15.928571   4
13  A 17.285714   4
14  A 18.642857   4
15  A 20.000000   4

关于R:根据距离列计算圈数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74380867/

相关文章:

r - 使用 tidyverse 扩展数据框

r - 为 R 中的命名向量重载 `$`

r - 将数据帧与另一个数据帧的权重相乘

r - 如何使用dplyr连接多个数据框?

r - dplyr 中带有 mutate 的 ifelse 语句

r - 使用 as.Date 和 as_date 将 `dttm` 格式转换为 `date` 会在 R 中给出不同的结果

r - 具有间歇行变量的整齐数据

r - 使用 dplyr::mutate 计算到数据点的地理距离

r - 如何获得点阵 xyplot 的 y 轴以将分数显示为百分比?

R - 安装 text2vec Ubuntu 虚拟机