【问题标题】:How to read .data format in R?如何在 R 中读取 .data 格式?
【发布时间】:2021-12-06 19:44:36
【问题描述】:

我需要在 R 中读取这个数据集 https://psl.noaa.gov/data/correlation/tsa.data

我试过了:

TSA <- read.table("https://psl.noaa.gov/data/correlation/tsa.data", fileEncoding="UTF-16", dec=";")

在这个数据集中,每一列代表从一月到十二月的月份(从左到右),每一行代表年份。

我需要从中构建一个时间序列数据框,以便分析数据。

如果我可以旋转表格以生成这样的数据框(tsibble),我想会有一些理想的事情:

YearMonth    TSA
1948 jan   -0.22
1948 feb   -0.12
1948 mar    0.04
1948 may   -0.21
 ...        ...
2021 sep    0.55 

由于我在 R 中阅读这种格式有困难,我想我会在这里得到很好的帮助建议。

【问题讨论】:

  • 未来“rnoaa”包可以更好地访问数据

标签: r file time-series dataset pivot


【解决方案1】:

如果你愿意使用tidyverse,你可以试试这样的。注意我使用skip = 1 跳过第一行,使用n_max = 74 跳过最后两行。这可能需要针对其他数据集进行调整。

library(tidyverse)

read_table("https://psl.noaa.gov/data/correlation/tsa.data",
           skip = 1, 
           n_max = 74,
           col_names = FALSE) %>%
  set_names(c('year', month.abb)) %>%
  pivot_longer(-year, 
               names_to = 'month',
               values_to = 'TSA')
#> 
#> # A tibble: 888 x 3
#>     year month   TSA
#>    <dbl> <chr> <dbl>
#>  1  1948 Jan   -0.22
#>  2  1948 Feb   -0.12
#>  3  1948 Mar    0.04
#>  4  1948 Apr   -0.21
#>  5  1948 May   -0.4 
#>  6  1948 Jun   -0.64
#>  7  1948 Jul   -0.4 
#>  8  1948 Aug   -0.53
#>  9  1948 Sep   -0.41
#> 10  1948 Oct   -0.42
#> # ... with 878 more rows

reprex package (v2.0.0) 于 2021 年 10 月 19 日创建

【讨论】:

  • 非常感谢 nniloc!效果很好!
  • @RodrigoH.Ozon 接受 nniloc 的回答会很有礼貌。您只需单击复选标记。
  • 感谢大卫·J·博萨克!
猜你喜欢
  • 2013-05-08
  • 1970-01-01
  • 2018-03-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-06-09
  • 1970-01-01
相关资源
最近更新 更多