谢谢你的帮助。
目前,Program 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的输出是如下所示的tibble。
$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发布于 2020-08-08 02:45:35
像这样的东西会有什么帮助吗?
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 rowshttps://stackoverflow.com/questions/63307461
复制相似问题