R 查找自最小值以来的时间
我有一个数据帧,其中包含一个变量、值(以NAs开头)以及该值有效的时间。对于每一行,我需要一个新的值来确定当前的R 查找自最小值以来的时间,r,dplyr,R,Dplyr,我有一个数据帧,其中包含一个变量、值(以NAs开头)以及该值有效的时间。对于每一行,我需要一个新的值来确定当前的cummin,以及从该最小值开始的时间 我有cummin部分,但请注意“多长”部分 例如,这里是我的数据帧 example <- data.frame(variable = c('a', 'a', 'a', 'a', 'a', 'b', 'b', 'b', 'b', 'b', 'b', 'b', 'b'), time = c(Sys.t
cummin
,以及从该最小值开始的时间
我有cummin
部分,但请注意“多长”部分
例如,这里是我的数据帧
example <- data.frame(variable = c('a', 'a', 'a', 'a', 'a', 'b', 'b', 'b', 'b', 'b', 'b', 'b', 'b'),
time = c(Sys.time(), Sys.time() + 5, Sys.time() + 15, Sys.time() + 34, Sys.time() + 51, Sys.time(), Sys.time() + 10, Sys.time() + 39, Sys.time() + 63, Sys.time() + 79, Sys.time() + 102, Sys.time() + 110, Sys.time() + 115),
value = c(NA, 3, 6, 2, 8, NA, NA, 1, 4, 3, 2, 0, 3))
我想添加一些内容以获得自当前_min以来的时间,从而获得以下内容:
variable time value current_min time_since_min
1 a 2017-10-02 17:13:59 NA NA NA
2 a 2017-10-02 17:14:04 3 3 0 secs
3 a 2017-10-02 17:14:14 6 3 10 secs
4 a 2017-10-02 17:14:33 2 2 0 secs
5 a 2017-10-02 17:14:50 8 2 17 secs
6 b 2017-10-02 17:13:59 NA NA NA
7 b 2017-10-02 17:14:09 NA NA NA
8 b 2017-10-02 17:14:38 1 1 0 secs
9 b 2017-10-02 17:15:02 4 1 24 secs
10 b 2017-10-02 17:15:18 3 1 40 secs
11 b 2017-10-02 17:15:41 2 1 63 secs
12 b 2017-10-02 17:15:49 0 0 0 secs
13 b 2017-10-02 17:15:54 3 0 5 secs
实际的数据帧超过1000000行,包含大量变量,因此任何特别慢的数据帧都可能有问题
任何帮助都将不胜感激您可以通过为当前分钟添加一个
组,然后添加时间时间[1]
你会得到一些奇怪的NA结果,所以你可以在以后删除它们
example %>%
group_by(variable) %>%
mutate(current_min = cum_na.rm(value, cummin)) %>%
group_by(current_min) %>%
mutate(time_since_min = time - time[1])
example %>%
group_by(variable) %>%
mutate(current_min = cum_na.rm(value, cummin)) %>%
group_by(current_min) %>%
mutate(time_since_min = time - time[1])