gpt4 book ai didi

r - 按奇数或偶数秒对 POSIXct 时间进行子集

转载 作者:行者123 更新时间:2023-12-04 22:05:15 25 4
gpt4 key购买 nike

我想对数据框进行子集化,以便仅保留秒数为偶数的观察结果。

您可以下载我的一小部分数据 here(100 行)。

前 6 行如下所示:

            Timestamp C01 C02 C03 C04 C05 C06 C07 C08 C09 C10 C11 C12 C13 C14
1 2013-04-01 00:00:00 0 1 1 1 1 0 1 1 1 1 0 1 0 1
2 2013-04-01 00:00:01 0 1 1 1 1 0 1 1 1 1 0 1 0 1
3 2013-04-01 00:00:02 0 1 1 1 1 0 1 1 1 1 0 1 0 1
4 2013-04-01 00:00:03 0 1 1 1 1 0 1 1 1 1 0 1 0 1
5 2013-04-01 00:00:04 0 1 1 1 1 0 1 1 1 1 0 1 0 1
6 2013-04-01 00:00:05 0 1 1 1 1 0 1 1 1 1 0 1 0 1

我希望它看起来像这样:
            Timestamp C01 C02 C03 C04 C05 C06 C07 C08 C09 C10 C11 C12 C13 C14
1 2013-04-01 00:00:00 0 1 1 1 1 0 1 1 1 1 0 1 0 1
2 2013-04-01 00:00:02 0 1 1 1 1 0 1 1 1 1 0 1 0 1
3 2013-04-01 00:00:04 0 1 1 1 1 0 1 1 1 1 0 1 0 1
4 2013-04-01 00:00:06 0 1 1 1 1 0 1 1 1 1 0 1 0 1
5 2013-04-01 00:00:08 0 1 1 1 1 0 1 1 1 1 0 1 0 1
6 2013-04-01 00:00:10 0 1 1 1 1 0 1 1 1 1 0 1 0 1

我了解如何从 herehere 对时间间隔进行子集化,但我一直无法找到与我的问题类似的示例,坦率地说,我不知道从哪里开始。

谢谢!

注意:时间戳变量已被格式化为 POSIXct。

最佳答案

不使用任何外部包,你可以做(​​甚至)

res =  df[(as.numeric(substr(df$Timestamp, 18, 19)) %% 2) == 0,]

出于测试目的,我使用了数据框的一小部分:
df = data.frame(Timestamp = c("2013-04-01 00:00:00", "2013-04-01 00:00:01", "2013-04-01 00:00:02", "2013-04-01 00:00:03", "2013-04-01 00:00:04"), C01 = rep(0,5), C02 = rep(1,5))
df$Timestamp = as.POSIXct(df$Timestamp)

这是您获得的(甚至):
#> res
# Timestamp C01 C02
#1 2013-04-01 00:00:00 0 1
#3 2013-04-01 00:00:02 0 1
#5 2013-04-01 00:00:04 0 1

对于奇数,通过将 ==0 替换为 ==1 来应用相同的逻辑

关于r - 按奇数或偶数秒对 POSIXct 时间进行子集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19666374/

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