R:根据距离列计算圈数

Cec*_*pez 3 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   
Run Code Online (Sandbox Code Playgroud)

如果我知道一圈是 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
Run Code Online (Sandbox Code Playgroud)

我该如何做到这一点,最好使用 tidyverse?

div*_*san 7

这是一个整数除法问题。只需将距离除以 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
Run Code Online (Sandbox Code Playgroud)