R 无法将时间变量转换为在ggplot上打印
在Gnu R中处理时间变量有两个问题 首先,如果没有如下错误消息,我无法使用as.Posixlt或as.Date从因子(或字符)重新编码时间数据(可下载): 字符串不是标准的明确格式 然后,我尝试用以下方式隐藏我的时间数据: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
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.)")