日期问题,从.csv文件使用ggplot2绘制时间序列,并带有年份月份的各个列

时间:2018-11-14 15:24:09

标签: r csv ggplot2 tidyr

我正在研究一个用于水文建模数据的数据分析项目。我将结果导出为.csv格式,并作为数据帧(Out_1)集成到R中。之后,我选择了一些需要的变量,如下所示。

Out_1 <- read.csv("Outlets_1.csv",header = TRUE)
Out_1s <- select(Out_1,SUB,YEAR,MON,AREAkm2,EVAPcms,FLOW_OUTcms,SED_OUTtons,YYYYMM)
str(Out_1s)
'data.frame':   480 obs. of  8 variables:
 $ SUB        : int  19 19 19 19 19 19 19 19 19 19 ...
 $ YEAR       : int  1983 1983 1983 1983 1983 1983 1983 1983 1983 1983 ...
 $ MON        : int  1 2 3 4 5 6 7 8 9 10 ...
 $ AREAkm2    : int  1025 1025 1025 1025 1025 1025 1025 1025 1025 1025 ...
 $ EVAPcms    : num  0.00601 0.00928 0.01696 0.01764 0.02615 ...
 $ FLOW_OUTcms: num  2.31 2.84 3.16 18.49 34.42 ...
 $ SED_OUTtons: num  215 308 416 3994 11440 ...
 $ YYYYMM     : int  198301 198302 198303 198304 198305 198306 198307 198308 198309 198310 ...


typeof(Out_1s$YEAR)
[1] "integer"
typeof(Out_1s$MON)
[1] "integer"
typeof(Out_1s$YYYYMM)
[1] "integer"

我要尝试做的是基于ggplot2创建图形摘要,基于结合Out_1s.YEAR和Out_1s.MON列或将Out_1s.YYYYMM变量标识为YYYY-MM或MM-YYYY。

Out_1s$Date <- NA
typeof(Out_1s$Date)
[1] "character"    

Out_1s$Date <- paste(Out_1s$YEAR,Out_1s$MON, sep = "-")
as.Date.character(Out_1s$Date, "%Y-%m")

graph1 <- ggplot(Out_1s, aes(Date, FLOW_OUTcms ))
graph1 + geom_line()

结果实际上不是预期的。

enter image description here

1 个答案:

答案 0 :(得分:1)

这里有两个问题。

  • 首先,Date对象是年,月和日。要解决此问题,请在粘贴语句中添加“ 01”。

    Out_1s$Date <- paste(Out_1s$YEAR,Out_1s$MON, "01", sep = "-")
    

    在您的情况下,由于日期不包括日期,因此as.Date函数将返回一系列NA(空域)

  • 第二,需要将as.Date函数的结果重新分配回原始列。

    Out_1s$Date <- as.Date.character(Out_1s$Date, "%Y-%m-%d")