gpt4 book ai didi

R:查找每天第一次出现的值

转载 作者:行者123 更新时间:2023-12-04 22:28:46 26 4
gpt4 key购买 nike

我有一个带有日期时间和值(在 0 和 1 之间)的 data.frame,我想找到 第一次出现 的 value=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)

我想要的是:
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[!duplicated(paste0(as.Date(df$Datetime), df$Value)) & df$Value == 1, ]
# Datetime Value
# 2 2016-12-01 23:50:00 1
# 3 2016-12-02 00:05:00 1
# 7 2016-12-04 12:10:00 1

解释:

创建日期 ( as.Date) - 使用 paste0 的值组合。创建一个逻辑向量,指示哪些组合不是 ( ! ) 前面元素 ( duplicated ) 的副本,并将其与“值”是否为 1 ( & df$Value == 1 ) 的测试组合。

关于R:查找每天第一次出现的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42333037/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com