我在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轴太忙(见下图)。
这是我使用的代码:
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.)")
答案 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.)")