1

我有一个月的数据框(4 月 1 日 - 4 月 30 日)。按小时收集的数据。我想使用ggplot_na_distribution(来自imputeTS包)创建时间序列图。问题是,如何将我的列名(标题)设置为时钟(00.00 - 23.00)?

           0   1    2   3    4   5   6    7

2017 年 1 月 4 日 24,4 26,4 28,1 29,6 30,5 31 不适用 30,7

2017 年 2 月 4 日 25,8 27,3 29,2 30,1 31 32,2 32 31,4

2017 年 3 月 4 日 26,2 27,5 29 30,2 31,1 31,7 31,6 30,2

2017 年 4 月 4 日 24,8 25,8 27,8 29,3 30,8 31,6 不适用 29,4

2017 年 5 月 4 日 25,6 27,2 29,3 30,3 30,2 31,5 31,7 31,7

2017 年 6 月 4 日 25,7 25,9 26,6 28 28,4 27 28,7 30

对不起,如果我的问题没有说清楚。是的,名称(df)有效。但我的 df 不能由ggplot_na_distribution. 它说,我的数据应该是单变量数据。我只想要我的数据,比如 tsAirgap 数据。在 tsAirgap 数据中,rowname 是 year,colname 是 month。在这种情况下,我希望我的 rowname 为 4 月 1 日 - 4 月 30 日,然后我的 colname df 是小时 00.00-23.00。

     Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec

1949 112 118 132 129  NA 135 148 148  NA 119 104 118

1950 115 126 141 135 125 149 170 170  NA 133  NA 140

1951 145 150 178 163 172 178 199 199 184 162 146 166

1952 171 180 193 181 183 218 230 242 209 191 172 194

1953 196 196 236 235 229 243 264 272 237 211 180 201

1954 204 188 235 227 234  NA 302 293 259 229 203 229

1955 242 233 267 269 270 315 364 347 312 274 237 278

1956 284 277  NA  NA  NA 374 413 405 355 306 271 306

1957 315 301 356 348 355  NA 465 467 404 347  NA 336

1958 340 318  NA 348 363 435 491 505 404 359 310 337

1959 360 342 406 396 420 472 548 559 463 407 362  NA

1960 417 391 419 461  NA 535 622 606 508 461 390 432

我感谢在我的帖子中写下的任何答案。非常感谢。对不起我的英语不好

4

2 回答 2

2

ggplot_na_distribution函数似乎需要一个向量或一个ts类对象,这就是 tsAirgap 是什么。

这里有关于如何创建 ts 对象的信息: https ://stat.ethz.ch/R-manual/R-devel/library/stats/html/ts.html

您还可以选择将 data.frame 从其当前的“宽”格式重塑为“长”格式,然后绘制值..

library(tidyr)
YourDataNew <- gather(YourData,key = "hour",value = "data",Jan:Dec) %>% arrange(day)
YourDataNew$data <- as.numeric(YourDataNew$data)
library(imputeTS)
ggplot_na_distribution(YourDataNew$data) 

..将正常工作,但我不确定如何在结果图中设置适当的刻度标签。

无论如何,如果您经常使用时间序列数据,最好学习如何创建和使用ts对象。

于 2017-09-19T08:31:20.267 回答
1

从你的问题看不太清楚。如果我有点理解,您想按小时格式设置数据框中列的名称。

您可以像这样使用names设置数据框的名称df(例如,如果您有 5 列):

names(df) <- c("13.30", "14.30", "16.00", "17.00", "18.00")
于 2017-09-19T02:56:27.117 回答