仅按天绘制多个XTS时间序列

时间:2018-01-22 10:50:32

标签: r plot time-series xts

我对R中的情节(时间序列)有疑问,希望有人能给我一些建议:

我有一个R项目(最新版本),我想比较河流出水量与降水量和其他气候因素。这是我想做的季节和/或月亮。但是,当我想绘制我的数据时,R通过monthes创建X轴。为了将所有数据(monthes)放在一个图中,我的想法是x轴显示monthes的天数,y轴显示升/ s。但是如何改变R关于x轴的行为?

以下是我的示例数据(50个数据集):

outflow = outflow_orig[sample(nrow(outflow_orig),50),]

show(outflow)
                datum liter_s
939        03.12.2012   16.40
422        31.01.2008   53.62
1373       18.02.2016   37.34
997        28.06.2013  117.20
719        30.07.2010   50.62
1253       09.06.2015   57.36
79         19.11.2004   21.62
1012       31.08.2013   60.28
745        08.11.2010   37.96
562        05.03.2009   77.28
15         27.12.2003   18.47
730        03.09.2010   45.93
1150       16.10.2014   18.47
460        12.06.2008   48.79
104     03.02.2005-na   26.66
504        20.11.2008   17.46
1048       11.01.2014   41.12
1241       09.05.2015   61.03
763        04.01.2011   49.47
1146       02.10.2014   18.47
1224       04.04.2015   66.36
909        19.07.2012   31.71
155        27.04.2005   75.87
147        12.04.2005   71.96
889        30.04.2012   59.35
268        09.06.2006   64.70
797        11.04.2011   59.65
932        02.11.2012   17.97
657        08.01.2010   41.93
113        11.12.2003   19.43
226        05.01.2006   26.31
396        06.11.2007   20.26
82         03.12.2004   20.35
1062       21.02.2014   39.29
299        09.11.2006   23.11
1264       09.07.2015   47.15
152  21.04.2005-17.15   81.40
665        11.02.2010   48.90
348        12.04.2007   53.17
407        11.12.2007   32.53
648        25.12.2009   36.46
785        24.02.2011   81.10
1331       01.12.2015   18.96
711        07.07.2010   46.40
498        31.10.2008   17.66
1489       26.10.2016   19.43
606        22.07.2009   46.85
496        23.10.2008   17.97
1120       18.08.2014   16.93
946        23.12.2012   23.47

创建XTS对象,因为有时我每天有两次测量,数据集中有字符。

outflow.xts     <- apply.daily(xts(outflow$liter_s, order.by = strptime(outflow$datum, format = "%Y-%m-%d", tz = "")),"mean", na.rm=TRUE)
outflow.df <- data.frame(date=index(outflow.xts), coredata(outflow.xts))

str(outflow.df)
'data.frame':   1456 obs. of  2 variables:
 $ Datum     : Date, format: "2003-11-05" "2003-11-09" "2003-11-12" ...
 $ liter_s: num  19.9 19.9 23.5 19.4 19.4 ...

提取蒙特/季节:

january    = outflow.xts[.indexmon(outflow.xts) %in% c(0)]
summer     = outflow.xts[.indexmon(outflow.xts) %in% c(6,7,8)]

第二:气候数据:

klimadaten <- read.csv(file="Klimastation_Langensallach-2003-2016-LFL_Bayern.csv",header = TRUE,sep = ";", dec=".", stringsAsFactors = FALSE)
klimadaten$datum  = as.Date(klimadaten$datum, format("%d.%m.%Y"))
klimadaten[,2:7]  = apply(klimadaten[,2:7], 2, as.numeric)
# Remove NA    
klimadaten = klimadaten[complete.cases(klimadaten[, 6]),]

str(klimadaten)
'data.frame':   4580 obs. of  7 variables:
 $ datum          : Date, format: "2003-11-01" "2003-11-02" "2003-11-03" ...
 $ eistag         : num  0 0 0 0 0 0 0 0 0 0 ...
 $ frosttag       : num  0 0 0 0 0 0 0 0 0 1 ...
 $ temp_luft_2m   : num  6.52 5.43 7.77 7.9 6.04 5.2 3.94 5.63 5.28 1.46 ...
 $ niederschlag_mm: num  0.7 0.1 0.3 0 0 0 0 0 0 0.1 ...
 $ temp_boden_5cm : num  6.39 6.19 6.25 6.68 5.69 5.2 5.08 4.97 4.77 4.52 ...
 $ luftfeuchte_rel: num  91.9 87.7 82 83.8 81.7 ...

head(klimadaten)
       datum eistag frosttag temp_luft_2m niederschlag_mm temp_boden_5cm luftfeuchte_rel
1 2003-11-01      0        0         6.52             0.7           6.39           91.93
2 2003-11-02      0        0         5.43             0.1           6.19           87.73
3 2003-11-03      0        0         7.77             0.3           6.25           82.03
4 2003-11-04      0        0         7.90             0.0           6.68           83.84
5 2003-11-05      0        0         6.04             0.0           5.69           81.74
6 2003-11-06      0        0         5.20             0.0           5.20           68.53

现在我对R的真正基本知识结束了......我如何在一个图表和第二个图表中绘制流出单位?如何绘制引用气候数据的季节和子集?

真的,谢谢你的任何帮助和建议。

来自德国的亲切问候 的Sascha

1 个答案:

答案 0 :(得分:0)

我想我得到了解决问题的方法。 funktion fortify()帮助我从新数据框中的XTS中提取值和索引。有了2个值,我就可以创建一个我知道的情节。 这个问题现在可以“关闭”(如果可能的话)。 亲切的问候