我想在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)
这是一个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)
| 归档时间: |
|
| 查看次数: |
844 次 |
| 最近记录: |