假設我有
dt <- as.POSIXct(c("2020-01-01 09:30:00",
"2020-01-01 09:31:00",
"2020-01-01 09:35:00",
"2020-01-01 09:36:00",
"2020-01-01 09:37:00",
"2020-01-01 09:40:00",
"2020-01-01 09:50:00",
"2020-01-01 09:51:00",
"2020-01-01 09:52:00"))
我想找到每次說連續 3 分鐘的第一分鐘dt,即
"2020-01-01 09:35:00" "2020-01-01 09:50:00".
我怎么能做到這一點?
uj5u.com熱心網友回復:
這是一個基本的 R 方法 -
with(rle(as.integer(c(difftime(dt[-1],dt[-length(dt)],units = 'mins'),0)) == 1),
dt[!duplicated(rep(seq_along(values), lengths)) &
rep(lengths >= 2 & values, lengths)])
#[1] "2020-01-01 09:35:00 08" "2020-01-01 09:50:00 08"
difftime計算連續時間戳之間的差異。- 使用
rle我們計算時間戳之間的差異為 1 分鐘的長度。 - 僅回傳長度大于 2 的組的起始時間戳。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/421501.html
標籤:
