提问人:Amrit 提问时间:9/1/2021 更新时间:9/1/2021 访问量:73
在 R 中准备时序数据
Preparing time series data in R
问:
我有一个以 .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 中执行时序分析?
非常感谢您的支持。
答:
0赞
Park
9/1/2021
#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
为您的数据 #Additional 代码
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
评论
0赞
Amrit
9/1/2021
感谢您@Park的快速回复。我尝试了您的建议,但它在我的数据集上不能完美运行。我认为这是由于我准备的原始数据和虚拟数据的结构。由于我已经将原始数据上传到Dropbox上,这是 dropbox.com/s/amy49ky2thrucsz/Rainfall.txt?dl=0 链接。您能否建议对脚本进行修改以处理我的数据。提前感谢您的支持。
0赞
Park
9/1/2021
@Amrit我会尝试使用您的数据并再次回复。谢谢。
评论