2
データフレームに変数、値(NAsで始まる)、およびその値が有効な時間があります。各行について、私は現在の値であるcummin
を決定する新しい値と、その最小値からの経過時間を求めます。最小値からどれぐらいの時間が来たかを調べる
私はcummin
部分を持っていますが、「いくら」部分に注意してください。たとえば、ここに私のデータフレームは、私は現在、私は以来、時間を得るために何かを追加したい変数
cum_na.rm <- function(x, func){
x[!is.na(x)] <- func(x[!is.na(x)])
x
}
example %>%
group_by(variable) %>%
mutate(current_min = cum_na.rm(value, 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))
です次の行に沿って何かを得るためにcurrent_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
実際のデータフレームは、多くの変数を持つ1,000,000行を超えているため、特に遅いものは問題になることがあります。
すべてのヘルプはあなたがtime - time[1]
に追加し、current_minためgroup_by
に追加することができます