爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
楼主: 晓枫染月

[其他] R语言与大气科学的那些事

[复制链接]
 楼主| 发表于 2020-4-14 11:54:29 | 显示全部楼层

感谢支持
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-4-14 12:07:24 | 显示全部楼层
实战--从数据处理和绘图开始
    在前面我们介绍了R的一些基本知识,相信小伙伴们对R已经有一些了解啦!今天是一个特殊的日子,我们将进入实战环节,看看R在数据处理中的应用。
    首先,介绍一下R中的包(package),类似于python中的模块儿。包可以理解为工具箱,不同的包可以实现不同的功能。使用某个包之前,首先要加载,加载方法:
  1. library('包的名字')
复制代码
注:如提示不存在叫**这个名字的编辑包,表明该包尚未安装。
     安装某个包也很简单:
  1. install.packages('包的名字')
复制代码
     包只需安装一次,下次使用直接加载即可。
     下面结合实例,进入实战:
第一步:包的安装和加载
    本实例中,我们使用的包有:openair,lubridate。openair是一个大气科学领域的包,可绘制风玫瑰图、风玫瑰污染图、时间序列图等。lubridate是一个非常好用的处理时间格式的包。首先安装它们,然后加载。如下:
  1. install.packages('openair') #安装openair
  2. install.packages('lubridate') #安装lubridate

  3. library('openair') #加载openair
  4. library('lubridate') #加载lubridate
复制代码
第二步:数据的读取:
    我们建议csv格式的数据,如果是xls格式,可在excel中转为csv格式。
  1. #读取名字为test_1.csv的数据到R中,成为data.frame。
  2. test = read.csv('D:\\R_EXAMPLE\\test_1.csv')
复制代码
特别提醒:文件路径间隔用"\\"或者"/",不能用'\'。否则报错。
    下面我们对数据做一个预览:

  1. summary(test)
复制代码
     1st Qu. 是数据25%分位数的值,3rd Qu.是数据75%分位数的值。
第二步:时间格式的解析:
    在上面的数据预览中,我们发现date列下出现了(other) : 2030。这是因为我们并未告诉R,date是时间列,R将此列当作了因子(factor)。这么处理:
  1. #告诉R,date列为时间格式。tz是时间所在的时区。
  2. test$date = ymd_hm(test$date,tz = 'Asia/Shanghai')
  3. #查看date列汇总
  4. summary(test$date)
复制代码
注:我们的数据时间格式为'年-月-日 时:分',使用ymd_hm。如果是‘月-日-年 时:分’,使用mdy_hm。其它情况,以此类推。
    现在date列出现了min、1st Qu.等,表明时间格式解析成功。
第三步:数据清洗:
在summary(test)中,我们发现SO2出现了负值,CO、PM10、PM2.5等出现了0值。这些不是我们想要的,需要对数据做清洗。
  1. #将SO2 PM10 PM25中小于或等于0的值标记为NA,也就是空值。
  2. test$SO2[test$SO2 <= 0] = NA
  3. test$PM2.5[test$PM2.5 <= 0] = NA
  4. test$PM10[test$PM10 <= 0] = NA
复制代码
小技巧:在输入test$后按Tab键有惊喜呦~。其实Tab是自动补全键。
第四步:画图:
(1)风玫瑰污染图
风玫瑰污染图调用openair中的windRose:

  1. #命令中的wd = 'WD'和ws = 'WS'参数,是为了告诉windRose,test中风向和风速列。
  2. windRose(test, wd = 'WD', ws = 'WS')
复制代码
在你的RSTUDIO右下角出现了图片,点击Export可保存图片。
(2)风玫瑰污染图
    风玫瑰污染图调用openair中的polarPlot函数:
  1. #x指定风速列,wd指定风向列,pollutant指定要展示的污染物。
  2. polarPlot(test, x='WS', wd='WD',pollutant = 'SO2')
复制代码
注:R中查看某个函数的介绍用help(),如help(windRose)、help(polarPlot)
在公众号中回复:test_1.csv,获得文中数据。



密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-4-15 11:37:45 | 显示全部楼层
晓枫染月 发表于 2020-4-14 12:07
实战--从数据处理和绘图开始    在前面我们介绍了R的一些基本知识,相信小伙伴们对R已经有一些了解啦!今天 ...

openair包是十分常用的绘图和数据分析包,附件是此包的说明。 OpenAir_Manual_compressed.pdf (14.38 MB, 下载次数: 62)
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

发表于 2020-4-15 15:32:41 | 显示全部楼层
期待楼主可以一直更新,如果附上图就更好了!
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-4-15 17:08:56 | 显示全部楼层
平流层的萝卜 发表于 2020-4-15 15:32
期待楼主可以一直更新,如果附上图就更好了!

谢谢支持!下面我会尽量附一些图。
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-4-15 17:12:01 | 显示全部楼层

谢谢支持!
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

发表于 2020-4-15 23:22:19 来自手机 | 显示全部楼层
期待楼主大作!!!
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

发表于 2020-4-16 09:25:28 | 显示全部楼层
想问下,怎么把输入数据进行格式转换(因有的包对数据的要求不同)
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-4-16 14:17:27 | 显示全部楼层
好久不见 发表于 2020-4-15 23:22
期待楼主大作!!!

谢谢支持!
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-4-16 14:19:38 | 显示全部楼层
平凡之路 发表于 2020-4-16 09:25
想问下,怎么把输入数据进行格式转换(因有的包对数据的要求不同)

将列表、矩阵等格式t转为数据框用 as.data.frame()
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Copyright ©2011-2014 bbs.06climate.com All Rights Reserved.  Powered by Discuz! (京ICP-10201084)

本站信息均由会员发表,不代表气象家园立场,禁止在本站发表与国家法律相抵触言论

快速回复 返回顶部 返回列表