假设我有一个带有列t的数据帧,其中包含数据集第一个点的频率为10 Hz的累积时间差。如何将其转换为Min:Second格式的R时间,以便它将以ggplots显示。我只会在x轴上每隔5分钟显示一次勾号,而在00:00,05:00,10:00等时间显示相应的时间。
示例:
# t columns is in seconds, thus 2000 seconds makes 33.33 minutes
# Last tick value on the x axis I will show is 30:00
d1 = 10 + runif(n = 5000)
d2 = 20 + runif(n = 5000)
d3 = 30 + runif(n = 5000)
d4 = 40 + runif(n = 5001)
d = c(d1,d2,d3,d4)
t = seq(0, 2000, by = 0.1)
DF = data.frame(t = t, d = d)
ggplot(data = DF, aes(x = t, y = d)) + geom_line()
谢谢,
答案 0 :(得分:1)
我认为最好通过POSIXct
将值转换为带有虚拟日期的difftime
类。
DF$min_sec <- as.POSIXct("2016-01-01") + as.difftime(DF$t, unit="secs")
ggplot(DF, aes(x = min_sec, y = d)) + geom_point() +
scale_x_datetime(date_breaks = "5 min", date_labels = "%M:%S", minor_breaks=NULL)
答案 1 :(得分:0)
DF = data.frame(t = seq(0, 2000, by = 0.1), data = runif(n = 20001))
DF$t <- lubridate::ms(DF$t)
对于第二部分,您可能希望在几小时前查看此问题/答案(包括评论)。他问了同样的问题。
R: Aggregating time series data returns NA
我每隔5分钟汇总一次他的数据:
library(xts)
mydata <- read.csv("data.csv")
times <- mydata$Time
X <- as.POSIXct(times)
X <- as.xts(X)
period.apply(mydata$T1, INDEX = endpoints(X, "minutes", 5), function(x) mean(x, na.rm=T))
然后他说他正在密谋这样:
DataTable <- table(cut(data, breaks="5 mins"))