我有时间序列数据,我想用这段代码绘制它:
temp <- read.csv("C:/Thesis/Data_set/grosseroor/25.csv",
header = FALSE)
names(temp) <- c("dt","ambtemp")
require(ggplot2)
library(scales)
temp$dt <-strptime(as.character(temp$dt), format = "%Y/%m/%d %H:%M")
ggplot(temp, aes(dt, ambtemp)) + geom_line() +
scale_x_datetime(breaks = date_breaks("5 hour"),labels=date_format("%H:%M")) +
xlab("Time 00.00 ~ 24:00 (2007-09-29)") + ylab("Tempreture")
示例数据:
date_time
10/20/2007 4:52 -6.14
10/20/2007 4:54 -6.17
10/20/2007 4:56 -6.09
10/20/2007 5:00 -7.2
10/20/2007 5:02 -6.65
10/20/2007 5:04 -6.04
10/20/2007 5:16 -6.26
10/20/2007 5:20 -6.52
10/20/2007 5:22 -6.4
10/20/2007 5:24 -6.92
10/20/2007 5:26 -7.04
10/20/2007 5:28 -6.84
10/20/2007 5:30 -6.16
10/20/2007 5:32 -7.13
10/20/2007 5:34 -7.43
10/20/2007 5:36 -6.84
10/20/2007 5:38 -7.82
10/20/2007 5:40 -6.84
10/20/2007 5:42 -6.84
10/20/2007 5:44 -7.46
10/20/2007 5:46 -7.74
10/20/2007 5:48 -8.04
但当我跑线temp$dt <-strptime((temp$dt), format = "%Y/%m/%d %H:%M")
时,
所有日期时间列都更改为NA
。
答案 0 :(得分:1)
问题是由format
中的错误strptime
字符串引起的。您指定了%m/%d/%Y
,但数据的格式不同:月/日/年。因此,您必须将命令更改为:
temp$dt <-strptime(as.character(temp$dt), format = "%m/%d/%Y %H:%M")
正如您将看到的那样,日期元素的顺序会自动显示为年 - 月 - 日:2007-10-20
。
列ambtemp
还有另一个问题。正如你在评论中看到的那样,这是一个因素。我认为它应该是数字。您可以使用以下命令对其进行转换:
temp$ambtemp <- as.numeric(as.character(temp$ambtemp ))
现在,您可以绘制数据(我没有更改以下命令):
require(ggplot2)
library(scales)
ggplot(temp, aes(dt, ambtemp)) + geom_line() +
scale_x_datetime(breaks = date_breaks("5 hour"),labels=date_format("%H:%M")) +
xlab("Time 00.00 ~ 24:00 (2007-09-29)") +
ylab("Tempreture")