我在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小时内的变化。 我希望它有助于理解我的问题。
答案 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)