我有一个数据框,其中包含日期时间和值(介于0和1之间),我想找到每天第一次出现值为1的事件。
df <- read.table(header = TRUE, text = '
Datetime Value
"2016-12-01 23:45:00" 0
"2016-12-01 23:50:00" 1
"2016-12-02 00:05:00" 1
"2016-12-02 00:10:00" 0
"2016-12-03 04:10:00" 0
"2016-12-03 04:15:00" 0
"2016-12-04 12:10:00" 1
"2016-12-04 12:15:00" 1
')
df$Datetime <- as.POSIXct(df$Datetime, "%Y-%m-%d %H:%M:%S", tz="UTC")
View(df)
What i would like to have is:
2016-12-01 23:50:00 1
2016-12-02 00:05:00 1
2016-12-04 12:10:00 1
我尝试使用match()和aggregate()解决问题,但目前没有成功。此外,我能够用for循环解决问题,但是a)速度非常慢,b)可能不是正确的方法。
df %>% group_by(Date = as.Date(Datetime)) %>% slice(which(Value==1)[1])
来减少一步。 - akrun