我在為這個資料集讀取和創建 R 中的時間序列物件時遇到了一些困難:
SOI:https: //psl.noaa.gov/data/correlation/soi.data ONI:https : //psl.noaa.gov/data/correlation/oni.data
通過查看我們在第一列中的年份和月份中的資料(1 月至 12 月)
我希望 R 中的 SOI 有這樣的東西:
YearMonth SOI
<mth> <dbl>
Jan 1948 -99.99
Feb 1948 -99.99
... ...
Sep 2021 -1.3
Oct 2021 -99.99
Nov 2021 -99.99
Dec 2021 -99.99
對于 ONI 也是如此:
YearMonth ONI
<mth> <dbl>
Jan 1950 -1.53
Feb 1950 -1.34
... ...
Aug 2021 -0.46
Sep 2021 -99.90
Oct 2021 -99.90
Nov 2021 -99.90
Dec 2021 -99.90
我相信這個資料集的安排可能是我困難的根源,因為我無法正確地旋轉這些資料。
我知道在堆疊中我們有優秀的 R 用戶,他們肯定會幫助我進行最佳實踐。
uj5u.com熱心網友回復:
此功能似乎適用于共享的兩個鏈接,但如果有更多標準方法來獲取資料,您可以使用它,因為它們會更可靠。
library(dplyr)
library(tidyr)
read_data <- function(link) {
read.table(link, skip = 1, fill = TRUE) %>%
slice(-(grep('-99.9', V1):n())) %>%
mutate(across(.fns = as.numeric)) %>%
pivot_longer(cols = -V1) %>%
mutate(name = month.abb[match(name, unique(name))]) %>%
unite(YearMonth, V1, name, sep = ' ')
}
d1 <- read_data('https://psl.noaa.gov/data/correlation/soi.data')
d1
# A tibble: 888 x 2
# YearMonth value
# <chr> <dbl>
# 1 1948 Jan -100.
# 2 1948 Feb -100.
# 3 1948 Mar -100.
# 4 1948 Apr -100.
# 5 1948 May -100.
# 6 1948 Jun -100.
# 7 1948 Jul -100.
# 8 1948 Aug -100.
# 9 1948 Sep -100.
#10 1948 Oct -100.
# … with 878 more rows
對于第二個鏈接 -
d2 <- read_data('https://psl.noaa.gov/data/correlation/oni.data')
d2
# A tibble: 864 x 2
# YearMonth value
# <chr> <dbl>
# 1 1950 Jan -1.53
# 2 1950 Feb -1.34
# 3 1950 Mar -1.16
# 4 1950 Apr -1.18
# 5 1950 May -1.07
# 6 1950 Jun -0.85
# 7 1950 Jul -0.54
# 8 1950 Aug -0.42
# 9 1950 Sep -0.39
#10 1950 Oct -0.44
# … with 854 more rows
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/333087.html
上一篇:為連接變數賦值(在R中)
下一篇:R基于列資料創建箱線圖
