改变 rnoaa 包的输出?
Altering output from rnoaa package?
谢谢你的帮助。
目前程序 R 中的 rnoaa 包为您提供 list
的输出。您可以轻松访问此列表中的数据;但是,我想改变数据的输出方式。它目前不是我可以使用的格式。我有动物搬迁,我正在尝试为每只动物搬迁指定一个在搬迁当天记录的温度值。
目前我的动物数据框的头部是这样的:
ID date time datetime lat lon DOP Elevation
1 333 2017-03-15 2:30:47 AM 2017-03-15 02:30:47 32.73810 -90.15422 3 48.64
2 333 2017-03-15 10:30:28 PM 2017-03-14 22:30:28 32.73797 -90.15424 2 39.45
3 333 2017-05-25 10:31:00 PM 2017-05-24 22:31:00 32.73790 -90.15489 7 91.02
4 333 2017-05-25 2:30:30 AM 2017-05-25 02:30:30 32.73758 -90.15488 4 28.65
5 333 2017-05-13 10:30:54 AM 2017-05-13 10:30:54 32.73753 -90.15261 4 32.97
6 333 2017-04-14 2:31:59 AM 2017-04-14 02:31:59 32.73747 -90.15155 5 45.97
从 rnoaa 包中获取天气数据很容易。
library(rnoaa)
weather <- ncdc(datasetid = "GHCND", stationid = "GHCND:USC00221389", datatypeid = c("PRCP", "TMIN", "TMAX", "TOBS"),
startdate = "2017-03-01", enddate = "2017-12-31", add_units = T, limit = 1000)
然而,rnoaa 的输出是一个看起来像这样的小标题。
$data
# A tibble: 1,000 x 9
date datatype station value fl_m fl_q fl_so fl_t units
<chr> <chr> <chr> <int> <chr> <chr> <chr> <chr> <chr>
1 2017-03-01T00:00:00 PRCP GHCND:USC00221389 0 "" "" 7 0700 mm_tenths
2 2017-03-02T00:00:00 PRCP GHCND:USC00221389 175 "" "" 7 0700 mm_tenths
3 2017-03-03T00:00:00 PRCP GHCND:USC00221389 0 "" "" 7 0700 mm_tenths
4 2017-03-04T00:00:00 PRCP GHCND:USC00221389 0 "" "" 7 0700 mm_tenths
5 2017-03-05T00:00:00 PRCP GHCND:USC00221389 0 "T" "" 7 0700 mm_tenths
6 2017-03-05T00:00:00 TOBS GHCND:USC00221389 94 "" "" 7 0700 celcius_tenths
7 2017-03-06T00:00:00 PRCP GHCND:USC00221389 18 "" "" 7 0700 mm_tenths
8 2017-03-06T00:00:00 TMAX GHCND:USC00221389 183 "" "" 7 0700 celcius_tenths
9 2017-03-06T00:00:00 TMIN GHCND:USC00221389 94 "" "" 7 0700 celcius_tenths
10 2017-03-06T00:00:00 TOBS GHCND:USC00221389 167 "" "" 7 0700 celcius_tenths
我想将 tibble 的输出更改为每一行都是一个日期,datatype 中的数据类型现在是一列。所以我会在我的动物搬迁数据集中有每天的降水量、最高温度、最低温度。像这样。
date PRCP TOBS TMAX TMIN
2017-03-06 5 78 85 72
这样我就可以轻松地将它添加到我的动物搬迁数据集中,看起来像这样。
ID date time datetime lat lon DOP Elevation PRCP TOBS TMAX TMIN
1 333 2017-03-15 2:30:47 AM 2017-03-15 02:30:47 32.73810 -90.15422 3 48.64 5 78 85 72
这样的事情会有帮助吗?
library(tidyverse)
weather$data %>%
pivot_wider(id_cols = date,names_from = datatype,values_from = value) %>%
separate(date,into = c("date","time"),sep = "T") %>%
mutate(date = as.Date(date))
这会给你:
# A tibble: 277 x 6
date time PRCP TOBS TMAX TMIN
<date> <chr> <int> <int> <int> <int>
1 2017-03-01 00:00:00 0 NA NA NA
2 2017-03-02 00:00:00 175 NA NA NA
3 2017-03-03 00:00:00 0 NA NA NA
4 2017-03-04 00:00:00 0 NA NA NA
5 2017-03-05 00:00:00 0 94 NA NA
6 2017-03-06 00:00:00 18 167 183 94
7 2017-03-07 00:00:00 0 183 256 167
8 2017-03-08 00:00:00 353 22 222 17
9 2017-03-09 00:00:00 0 139 222 22
10 2017-03-10 00:00:00 86 150 244 139
# ... with 267 more rows
谢谢你的帮助。
目前程序 R 中的 rnoaa 包为您提供 list
的输出。您可以轻松访问此列表中的数据;但是,我想改变数据的输出方式。它目前不是我可以使用的格式。我有动物搬迁,我正在尝试为每只动物搬迁指定一个在搬迁当天记录的温度值。
目前我的动物数据框的头部是这样的:
ID date time datetime lat lon DOP Elevation
1 333 2017-03-15 2:30:47 AM 2017-03-15 02:30:47 32.73810 -90.15422 3 48.64
2 333 2017-03-15 10:30:28 PM 2017-03-14 22:30:28 32.73797 -90.15424 2 39.45
3 333 2017-05-25 10:31:00 PM 2017-05-24 22:31:00 32.73790 -90.15489 7 91.02
4 333 2017-05-25 2:30:30 AM 2017-05-25 02:30:30 32.73758 -90.15488 4 28.65
5 333 2017-05-13 10:30:54 AM 2017-05-13 10:30:54 32.73753 -90.15261 4 32.97
6 333 2017-04-14 2:31:59 AM 2017-04-14 02:31:59 32.73747 -90.15155 5 45.97
从 rnoaa 包中获取天气数据很容易。
library(rnoaa)
weather <- ncdc(datasetid = "GHCND", stationid = "GHCND:USC00221389", datatypeid = c("PRCP", "TMIN", "TMAX", "TOBS"),
startdate = "2017-03-01", enddate = "2017-12-31", add_units = T, limit = 1000)
然而,rnoaa 的输出是一个看起来像这样的小标题。
$data
# A tibble: 1,000 x 9
date datatype station value fl_m fl_q fl_so fl_t units
<chr> <chr> <chr> <int> <chr> <chr> <chr> <chr> <chr>
1 2017-03-01T00:00:00 PRCP GHCND:USC00221389 0 "" "" 7 0700 mm_tenths
2 2017-03-02T00:00:00 PRCP GHCND:USC00221389 175 "" "" 7 0700 mm_tenths
3 2017-03-03T00:00:00 PRCP GHCND:USC00221389 0 "" "" 7 0700 mm_tenths
4 2017-03-04T00:00:00 PRCP GHCND:USC00221389 0 "" "" 7 0700 mm_tenths
5 2017-03-05T00:00:00 PRCP GHCND:USC00221389 0 "T" "" 7 0700 mm_tenths
6 2017-03-05T00:00:00 TOBS GHCND:USC00221389 94 "" "" 7 0700 celcius_tenths
7 2017-03-06T00:00:00 PRCP GHCND:USC00221389 18 "" "" 7 0700 mm_tenths
8 2017-03-06T00:00:00 TMAX GHCND:USC00221389 183 "" "" 7 0700 celcius_tenths
9 2017-03-06T00:00:00 TMIN GHCND:USC00221389 94 "" "" 7 0700 celcius_tenths
10 2017-03-06T00:00:00 TOBS GHCND:USC00221389 167 "" "" 7 0700 celcius_tenths
我想将 tibble 的输出更改为每一行都是一个日期,datatype 中的数据类型现在是一列。所以我会在我的动物搬迁数据集中有每天的降水量、最高温度、最低温度。像这样。
date PRCP TOBS TMAX TMIN
2017-03-06 5 78 85 72
这样我就可以轻松地将它添加到我的动物搬迁数据集中,看起来像这样。
ID date time datetime lat lon DOP Elevation PRCP TOBS TMAX TMIN
1 333 2017-03-15 2:30:47 AM 2017-03-15 02:30:47 32.73810 -90.15422 3 48.64 5 78 85 72
这样的事情会有帮助吗?
library(tidyverse)
weather$data %>%
pivot_wider(id_cols = date,names_from = datatype,values_from = value) %>%
separate(date,into = c("date","time"),sep = "T") %>%
mutate(date = as.Date(date))
这会给你:
# A tibble: 277 x 6
date time PRCP TOBS TMAX TMIN
<date> <chr> <int> <int> <int> <int>
1 2017-03-01 00:00:00 0 NA NA NA
2 2017-03-02 00:00:00 175 NA NA NA
3 2017-03-03 00:00:00 0 NA NA NA
4 2017-03-04 00:00:00 0 NA NA NA
5 2017-03-05 00:00:00 0 94 NA NA
6 2017-03-06 00:00:00 18 167 183 94
7 2017-03-07 00:00:00 0 183 256 167
8 2017-03-08 00:00:00 353 22 222 17
9 2017-03-09 00:00:00 0 139 222 22
10 2017-03-10 00:00:00 86 150 244 139
# ... with 267 more rows