无法转换时间变量以在ggplot上绘制它

时间:2014-11-14 14:04:25

标签: r ggplot2 strptime

我在Gnu R中处理我的时间变量有两个问题!

首先,我无法使用 as.Posixlt as.Date 从因子(或字符)重新编码时间数据(可下载here)而不使用像这样的错误信息:

  

字符串不是标准的明确格式

然后我尝试用以下方式转换我的时间数据:

dates <- strptime(time, "%Y-%m-%j")

只给了我:

  

NA

其次,我希望(有)转换我的时间数据的原因是我想用 ggplot2 绘制它并调整我的scale_x_continuous(如所描述的here)以便它只在x轴上每50年写一次(即1250-01-01,1300-01-01等),否则x轴太忙(见下图)。

enter image description here

这是我使用的代码:

library(ggplot2)
library(scales)
library(reshape)
df <- read.csv(file="https://dl.dropboxusercontent.com/u/109495328/time.csv")
attach(df)
dates <- as.character(time)
population <- factor(Number_Humans)
ggplot(df, aes(x = dates, y = population)) + geom_line(aes(group=1), colour="#000099") + theme(axis.text.x=element_text(angle=90)) + xlab("Time in Years (A.D.)")

1 个答案:

答案 0 :(得分:2)

您需要删除日期列中的引号,然后才能将其转换为日期格式:

df <- read.csv(file="https://dl.dropboxusercontent.com/u/109495328/time.csv")
df$time <- gsub('\"', "", as.character(df$time), fixed=TRUE)
df$time <- as.Date(df$time, "%Y-%m-%j")


ggplot(df, aes(x = time, y = Number_Humans)) + 
     geom_line(colour="#000099") + 
     theme(axis.text.x=element_text(angle=90)) + 
     xlab("Time in Years (A.D.)") 

enter image description here