R data.table计算直到达到值的行

use*_*289 7 r data.table

我想在data.table中返回一个新列,该列显示向下的行数,直到达到低于当前值(Temp)的值.

library(data.table)
set.seed(123)
DT <- data.table( Temp = runif(10,0,20) )
Run Code Online (Sandbox Code Playgroud)

这就是我希望它看起来的样子:

set.seed(123)
DT <- data.table(
        Temp = runif(10,0,20),
        Day_Below_Temp = c("5","1","3","2","1","NA","3","1","1","NA")
)
Run Code Online (Sandbox Code Playgroud)

jer*_*ycg 2

这是一个dplyr方法:

library(dplyr)
set.seed(123)
dt <- data.frame( Temp = runif(10,0,20) )
dt %>% mutate(Day_Below_Temp = 
                 sapply(1:length(Temp), function(x) min(which(.$Temp[x:length(.$Temp)] < .$Temp[x]))-1))

        Temp Day_Below_Temp
1   5.751550              5
2  15.766103              1
3   8.179538              3
4  17.660348              2
5  18.809346              1
6   0.911130            Inf
7  10.562110              3
8  17.848381              1
9  11.028700              1
10  9.132295            Inf
Run Code Online (Sandbox Code Playgroud)

  • 我想知道这里的“dplyr”角色是什么?‘变异’?难道只用“$”就可以实现吗? (2认同)