实战--从数据处理和绘图开始 在前面我们介绍了R的一些基本知识,相信小伙伴们对R已经有一些了解啦!今天是一个特殊的日子,我们将进入实战环节,看看R在数据处理中的应用。
首先,介绍一下R中的包(package),类似于python中的模块儿。包可以理解为工具箱,不同的包可以实现不同的功能。使用某个包之前,首先要加载,加载方法: 注:如提示不存在叫**这个名字的编辑包,表明该包尚未安装。 安装某个包也很简单: 包只需安装一次,下次使用直接加载即可。 下面结合实例,进入实战: 第一步:包的安装和加载
本实例中,我们使用的包有:openair,lubridate。openair是一个大气科学领域的包,可绘制风玫瑰图、风玫瑰污染图、时间序列图等。lubridate是一个非常好用的处理时间格式的包。首先安装它们,然后加载。如下: - install.packages('openair') #安装openair
- install.packages('lubridate') #安装lubridate
- library('openair') #加载openair
- library('lubridate') #加载lubridate
复制代码第二步:数据的读取: 我们建议csv格式的数据,如果是xls格式,可在excel中转为csv格式。 - #读取名字为test_1.csv的数据到R中,成为data.frame。
- test = read.csv('D:\\R_EXAMPLE\\test_1.csv')
复制代码特别提醒:文件路径间隔用"\\"或者"/",不能用'\'。否则报错。 下面我们对数据做一个预览: 1st Qu. 是数据25%分位数的值,3rd Qu.是数据75%分位数的值。 第二步:时间格式的解析: 在上面的数据预览中,我们发现date列下出现了(other) : 2030。这是因为我们并未告诉R,date是时间列,R将此列当作了因子(factor)。这么处理: - #告诉R,date列为时间格式。tz是时间所在的时区。
- test$date = ymd_hm(test$date,tz = 'Asia/Shanghai')
- #查看date列汇总
- summary(test$date)
复制代码注:我们的数据时间格式为'年-月-日 时:分',使用ymd_hm。如果是‘月-日-年 时:分’,使用mdy_hm。其它情况,以此类推。
现在date列出现了min、1st Qu.等,表明时间格式解析成功。
第三步:数据清洗: 在summary(test)中,我们发现SO2出现了负值,CO、PM10、PM2.5等出现了0值。这些不是我们想要的,需要对数据做清洗。 - #将SO2 PM10 PM25中小于或等于0的值标记为NA,也就是空值。
- test$SO2[test$SO2 <= 0] = NA
- test$PM2.5[test$PM2.5 <= 0] = NA
- test$PM10[test$PM10 <= 0] = NA
复制代码小技巧:在输入test$后按Tab键有惊喜呦~。其实Tab是自动补全键。 第四步:画图: (1)风玫瑰污染图
风玫瑰污染图调用openair中的windRose:
- #命令中的wd = 'WD'和ws = 'WS'参数,是为了告诉windRose,test中风向和风速列。
- windRose(test, wd = 'WD', ws = 'WS')
复制代码在你的RSTUDIO右下角出现了图片,点击Export可保存图片。 (2)风玫瑰污染图
风玫瑰污染图调用openair中的polarPlot函数: - #x指定风速列,wd指定风向列,pollutant指定要展示的污染物。
- polarPlot(test, x='WS', wd='WD',pollutant = 'SO2')
复制代码注:R中查看某个函数的介绍用help(),如help(windRose)、help(polarPlot) 在公众号中回复:test_1.csv,获得文中数据。
|