【问题标题】:Preparing time series data in R在 R 中准备时间序列数据
【发布时间】:2021-10-30 16:45:48
【问题描述】:

我有一个以 .txt 格式保存的降雨数据文件

Year   1,   2,   3,   4,   ................365, 366
1981   1.0, 0.0, 0.0, 0.0, ................1.2, 0.0
1982   0.8, 0.0, 4.5, 2.3,.................0.9, 2.1
.
.
.
.

2015  0.0, 2.3, 8.7, 2.3, .................0.0, 0.0

此处第一列包含年份,第二列包含一年中的降雨量。

现在我想在 R 中进行降水分析。如何从该数据结构中准备时间序列数据以在 R 中执行时间序列分析?

非常感谢您提前支持。

【问题讨论】:

  • 请编辑问题以将其限制为具有足够详细信息的特定问题,以确定适当的答案。

标签: r time-series data-manipulation


【解决方案1】:

我使用这个dummy 数据。

dummy <- tibble::tribble(
  ~year,     ~"1",          ~"2",   ~"3", 
  "2016",  1.25,        0.25, 0.25,
  "2017",  1.20,        0.20, 0.20,
  "2018",  1.30,        0.30, 0.30,
  "2019",  1.18,        0.18, 0.18,
)

  year    `1`   `2`   `3`
  <chr> <dbl> <dbl> <dbl>
1 2016   1.25  0.25  0.25
2 2017   1.2   0.2   0.2 
3 2018   1.3   0.3   0.3 
4 2019   1.18  0.18  0.18

然后

melt(dummy) %>% mutate(variable = as.numeric(variable)) %>%
  mutate(date = as.Date(variable-1, origin = paste0(year, "-01-01"))) %>%
  select(date, value) %>% arrange(date)

成为

         date value
1  2016-01-01  1.25
2  2016-01-02  0.25
3  2016-01-03  0.25
4  2017-01-01  1.20
5  2017-01-02  0.20
6  2017-01-03  0.20
7  2018-01-01  1.30
8  2018-01-02  0.30
9  2018-01-03  0.30
10 2019-01-01  1.18
11 2019-01-02  0.18
12 2019-01-03  0.18

#您的数据的附加代码

dummy <- read.table("D:/Rainfall.txt", header = TRUE)
colnames(dummy) <- as.character(c("Year",1:366))
melt(dummy, id.var="Year") %>% 
  mutate(variable = as.numeric(variable), value = as.numeric(str_replace(value, ",", ""))) %>%
  mutate(date = as.Date(variable-1, origin = paste0(Year, "-01-01"))) %>%
  select(date, value) %>% arrange(date)

head 的结果是这样的

        date value
1 1981-01-01   1.0
2 1981-01-02   0.0
3 1981-01-03   0.0
4 1981-01-04   0.0
5 1981-01-05   0.0
6 1981-01-06   0.9

【讨论】:

  • 感谢@Park 的快速回复。我尝试了您的建议,但它在我的数据集上无法完美运行。我认为这是由于您准备的我的原始数据和虚拟数据的结构。因为我已经在 Dropbox 上上传了原始数据,这里是链接 dropbox.com/s/amy49ky2thrucsz/Rainfall.txt?dl=0。您能否建议修改脚本以处理我的数据。提前感谢您的支持。
  • @Amrit 我会尝试使用您的数据并再次回复。谢谢。
  • 非常感谢@park。效果很好。
猜你喜欢
  • 2021-06-17
  • 1970-01-01
  • 2019-07-06
  • 2011-09-08
  • 1970-01-01
  • 2015-04-13
  • 1970-01-01
  • 2014-03-02
  • 2013-03-10
相关资源
最近更新 更多