R 无法将时间变量转换为在ggplot上打印

R 无法将时间变量转换为在ggplot上打印,r,ggplot2,strptime,R,Ggplot2,Strptime,在Gnu R中处理时间变量有两个问题 首先,如果没有如下错误消息,我无法使用as.Posixlt或as.Date从因子(或字符)重新编码时间数据(可下载): 字符串不是标准的明确格式 然后,我尝试用以下方式隐藏我的时间数据: dates <- strptime(time, "%Y-%m-%j") 日期您需要删除日期列中的引号,然后可以将其转换为日期格式: df <- read.csv(file="https://dl.dropboxusercontent.com/u/1094953

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

首先,如果没有如下错误消息,我无法使用as.Posixltas.Date从因子(或字符)重新编码时间数据(可下载):

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

然后,我尝试用以下方式隐藏我的时间数据:

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

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

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.)") 

df“1250-02-46”是什么日期?2月份的天数很少超过29天。另外,不要使用
attach
。您不建议使用
attach
?这是一年中的第46天。这不是我做的,而是我使用的程序。这真的是R的问题吗?你的意思是,如果你把R传递给它,告诉它“46”是“十进制数字(01-31)”的月份中的某一天,而实际上它不是月份中的某一天,R会感到困惑吗?令人震惊的是,是的。您想要%j,这是“十进制数字(001–366)的一年中的某一天”;您正在使用%j。如果我运行它,就是输出。你没有这样做吗?你的时间戳似乎有三个级别的引用。这些引用是否将其纳入了值中?另外,
aes(group=1)
是多余的。嗯,当我删除它时,我得到:
geom\u路径:每个组只包含一个观察值。您是否需要调整团队美学?
;我不知道是不是出了什么问题,我也不知道垂直线是从哪里来的。你不应该把data.frame的所有列都变成字符。使用
df$time如果使用
as.POSIXct
strtime
则应始终明确指定时区。这里使用
as.Date
就足够了,它有一个
格式
参数。例如,
df$time@TilHund组=1我在这里解释的事情:
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.)")