【问题标题】:Add 1 minute to duplicate daylight savings hour in R在 R 中添加 1 分钟以复制夏令时
【发布时间】:2017-09-14 21:12:52
【问题描述】:

我在 R 中有一个如下所示的数据框:

输入(样本,控制 = NULL):

list(date_time = c(1446339600, 1446343200, 1446343200, 1446346800, 
1446350400), id = c(1, 1, 1, 1, 1), test = c("0.9", "0.64", "0.7", 
"0.72", "0.88"))

实际数据框有 1,217,048 行,其中包含许多重复日期,但它按 date_time 排序,然后按 id 排序,类似于我提供的示例。我试图通过添加 1 分钟之类的操作来使第二次夏令时的出现有所不同,以便每隔一次你看到 '2015-11-01 02:00:00' 它会变成类似 '2015-11-01 02:01:00'。我需要它有所不同,以便我可以在数据库中查询小时,而不需要对两个小时的数据求和。做这样的事情最好的方法是什么?

【问题讨论】:

  • 我建议不要更改数据以方便您的数据库聚合。如果您需要它们是不同的,那么也许您应该为每一行添加一个唯一的id,而不是修改数据。
  • 在我这样做之前,我会考虑更改我的数据库中的表结构。我没想到。

标签: r dataframe dst


【解决方案1】:
m = data.frame(date_time = c(1446339600, 1446343200, 1446343200, 1446346800, 
                       1446350400), id = c(1, 1, 1, 1, 1), test = c("0.9", "0.64", "0.7", 
                                                                    "0.72", "0.88"))
m$date_time = as.POSIXct((m$date_time + ave(m$date_time, m$date_time, FUN = seq_along) - 1) * 60, origin = "1970-01-01")
m
#            date_time id test
#1 4719-12-18 06:00:00  1  0.9
#2 4719-12-20 18:00:00  1 0.64
#3 4719-12-20 18:01:00  1  0.7
#4 4719-12-23 06:00:00  1 0.72
#5 4719-12-25 18:00:00  1 0.88

【讨论】:

    猜你喜欢
    • 2012-02-08
    • 2014-11-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-10
    • 1970-01-01
    • 1970-01-01
    • 2020-11-24
    相关资源
    最近更新 更多