【问题标题】:How can I subsett between two specific time points in r如何在 r 中的两个特定时间点之间进行子集化
【发布时间】:2025-12-27 01:35:07
【问题描述】:

我有一个关于子集或排除我的数据集特定时间点之外的数据的问题。下面是我的数据集的一个小样本,它已经从包含 12 000 多个观察值的原始数据帧中大量子集

所以我想要实现的是能够在两个特定时间点之间获取这些数据的子集,例如13:30:00 至 19:30:00 之间。这样做的原因是我希望看到外部温度对蜂箱活动的影响,活动是蜜蜂进出蜂巢的原始数量。

在这个阶段,我可以在温度范围、日期范围等之间进行子集化。但我不能对时间进行子集化。有人知道如何做到这一点吗?

我尝试的代码是这样的

x <- subset(beedata, Time >= 10:30:00 | Time <= 19:30:00, 
select=c(Date, Time, Activity, Outside.Temp))  

但是这给了我一个错误:

"1: In 10:30:0 : 数值表达式有21个元素:只使用第一个 2: 在 Ops.factor(Time, 10:30:0) : ‘>=’ 对因子没有意义 3:在 19:30:0 :数值表达式有 12 个元素:只使用第一个 4: 在 Ops.factor(Time, 19:30:0) : ‘

>= 对因子没有意义是有道理的,但我不确定将其更改为什么时间。 as.Date 适用于日期,但据我所知,它不适用于时间。至于仅使用的第一个元素,我不理解该错误。希望这很清楚。

干杯 马特

【问题讨论】:

    标签: r time-series subset


    【解决方案1】:

    不太确定为什么您的数据会在因子中,但是根据它在数据中的显示方式,我假设您应该能够使用

    转换单个元素
    strptime(toString(*factor*))
    

    然后从那里开始,一切都应该可以作为日期进行比较,因此类似以下的内容应该可以工作

    *date* >= strptime("13:30:00", "%H:%M:%S") & *date* <= strptime("19:30:00", "%H:%M:%S")
    

    【讨论】:

    • 感谢 Joseph 的回复,很抱歉早上在我的国家回复缓慢。我已经尝试了第一行代码,它给了我一个错误:strptime(toString("beedata$Time")) 中的错误:缺少参数“格式”,没有默认值。
    • @Joseph Malecki 我想我最终找到了解决问题的方法。这可能不是最有效的方法,但这是我使用的代码如下:beedata$Time =“10:30:00”,时间= 20,Outside.Temp