24小时前获取数据,并添加时间戳

时间:2020-04-29 09:23:44

标签: r

我在r中有一个数据框,其中每隔一小时五分钟包含一次读数。我想在每行之前的24小时内添加相同的行数据。

我该怎么做?

我正在尝试从网上搜索并找到诸如as.Date("2020-01-11")-1之类的解决方案,但无法使它们适用于我的数据。请帮忙。

这是我的数据框示例。它包含大约3个月的数据,近10,000行。例如,我只放入3行:

>df
         timestamp           Var1         Var2        Var3 
1    2018-07-20 13:50:00   32.0358        28.1        3.6       
2    2018-07-20 13:55:00   32.0358        28.0        2.5       
3    2018-07-20 14:00:00   32.0358        28.1        2.2  

24小时前数据的值例如Var4 Var5 Var6

编辑 就像第一行在时间戳2018-07-20 13:50:00上具有3 vars的值。我想将这3个变量的价值恰好在24小时前添加,即在2018-07-19 13:50:00,即一天前同时添加到3个新变量中,例如var4,var5,var6。我想基本上观察这些在24小时内的变化。 我希望它有助于理解我的问题。

2 个答案:

答案 0 :(得分:1)

我仍然不确定我是否了解您想要什么,但是这里有一个非常简单的解决方案,您可以从这里开始:

library(dplyr)
df <- data.frame(timestamp = c("2018-07-20 13:00", "2018-07-20 14:00", "2018-07-21 13:00", "2018-07-21 14:00"),
             var1 = c(1,2,3,4))
df$timestamp <- as.POSIXct(df$timestamp)

#copy the first dataframe and modify the timestamp
df2 <- data.frame(timestamp = df$timestamp + 60*60*24,
              var2 = df$var1)

#then merge the second df with the first one
df <- left_join(df,df2, by = "timestamp")

df
            timestamp var1 var2
1 2018-07-20 13:00:00    1   NA
2 2018-07-20 14:00:00    2   NA
3 2018-07-21 13:00:00    3    1
4 2018-07-21 14:00:00    4    2

答案 1 :(得分:0)

一种方法是创建一个新列,从timestamp中减去24小时,然后将其与自身结合起来以得到彼此相邻的新列。

df$timestamp <- as.POSIXct(df$timestamp, tz = "UTC")
df$timestamp1 <- df$timestamp - 86400
merge(df, df, by.x = "timestamp", by.y = "timestamp1", all.x = TRUE)