首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >改变rnoaa包的输出?

改变rnoaa包的输出?
EN

Stack Overflow用户
提问于 2020-08-08 02:34:44
回答 1查看 38关注 0票数 0

谢谢你的帮助。

目前,Program R中的rnoaa包给出了一个作为list的输出。您可以轻松地访问此列表中的数据;但是,我希望更改数据的输出方式。它目前的格式对我来说是不可用的。我有动物重新定位,我正在尝试给每个动物重新定位一个指定的温度值,这是在定位当天记录的。

目前,我的动物数据帧的头部如下所示:

代码语言:javascript
复制
   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包中获取天气数据很容易。

代码语言:javascript
复制
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。

代码语言:javascript
复制
$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中的数据类型现在是一列。因此,我在动物迁移数据集中有每天的降水量、最高温度和最低温度。就像这样。

代码语言:javascript
复制
date          PRCP      TOBS      TMAX      TMIN
2017-03-06     5         78         85       72

这将允许我轻松地将其添加到我的动物重新定位数据集中,如下所示。

代码语言:javascript
复制
    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
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-08-08 02:45:35

像这样的东西会有什么帮助吗?

代码语言:javascript
复制
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))

这将为您提供:

代码语言:javascript
复制
# 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
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63307461

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档