#汽车燃料效率数据来源
#'http://www.fueleconomy.gov/feg/epadata/vehicles.csv.zip'
vehicles<-read.csv('C:\\Users\\Administrator\\desktop\\R\\vehicles.csv',stringsAsFactors = F,header = T)#导入数据

在RStudio中查看导入的数据(这只是一部分)

nrow(vehicles)#查看数据有多少行

[1] 39958

ncol(vehicles)#查看数据有多少列(变量)

[1] 84

names(vehicles)#查看每一列的名称

[1] "barrels08"       "barrelsA08"     
 [3] "charge120"       "charge240"

[5] "city08"          "city08U"

......

[79] "modifiedOn"      "startStop"      
[81] "phevCity"        "phevHwy"

[83] "phevComb"        "trany2"

#可以在'http://www.fueleconomy.gov/feg/ws/index.shtml#vehicle'中查看这些变量的更精准的含义
length(unique(vehicles[,'year']))#查看数据集中包含多少年的数据

[1] 36

length(unique(vehicles$year))#同上

[1] 36

first_year<-min(vehicles[,'year'])
last_year<-max(vehicles[,'year'])
first_year

[1] 1984

last_year

[1] 2019

table(vehicles$fuelType1)#查看燃料类型

Diesel       Electricity 
             1131               165 
Midgrade Gasoline       Natural Gas 
               96                60 
 Premium Gasoline  Regular Gasoline

11235             27271

vehicles$trany[vehicles$trany=='']<-NA
#将传动方式中的缺失值用NA填补
vehicles$trany2<-ifelse(substr(vehicles$trany,1,4)=='Auto','Auto','Manual')
#使用substr()函数提取trany值得前四个字符用于分类并生成一个新的变量trany2

[1] "Manual" "Manual" "Manual" "Auto"  
   [5] "Manual" "Auto"   "Manual" "Auto"

[9] "Manual" "Auto"   "Manual" "Auto"

......

library(plyr)
library(ggplot2)
mpgByYr<-ddply(vehicles,~year,summarise,avgMPG=mean(comb08),avgHghy=mean(highway08),avgCity=mean(city08))
#使用plyr包中的ddply()函数来操作vehicles数据集,按年份整合,然后对每个组计算highway、city和combine的燃油效率,将结果赋值给一个新的数据框:mpgByYr

ggplot(mpgByYr,aes(year,avgMPG))+geom_point()+geom_smooth()+xlab('Year')+ylab('Average MPG')+ggtitle('All Cars')
#绘制avgMPG和Year之间的关系(geom_point()指定通过点的方式绘制图形,geom_smooth()在图中添加一个阴影区域来展示平滑的均值并加上一个置信度为0.95的置信区间)

avgMPG和Year之间的关系

ggplot(mpgByYr,aes(year,avgHghy))+geom_point()+geom_smooth()+xlab('Year')+ylab('Average Highway MPG')+ggtitle('All Cars')
#绘制avgHghy和Year之间的关系

avgHghy和Year之间的关系

ggplot(mpgByYr,aes(year,avgCity))+geom_point()+geom_smooth()+xlab('Year')+ylab('Average City MPG')+ggtitle('All Cars')
#绘制avgCity和Year之间的关系
avgCity和Year之间的关系

基于上述可视化结果,似乎可以得出一个结论:近年来销售的汽车的燃油经济性有了显著的增长。

然而以下的数据显示出近年来混合动力和非燃油汽车的销量在增长:

table(vehicles$fuelType1)

因此上述结论并不准确

接下来我们只看燃油汽车的数据

gasCars<-subset(vehicles,fuelType1 %in% c('Regular Gasoline','Premium Gasoline','Midgrade Gasoline')&fuelType2==''&atvType!='Hybrid')
#使用subset()函数生成一个新的数据框:gasCars。这个数据框只包含纯汽油汽车
mpgByYr_Gas<-ddply(gasCars,~year,summaries,avgMPG=mean(comb08),avgHghy=mean(highway08),avgCity=mean(city08))
#按年份整合纯汽油汽车的数据
ggplot(mpgByYr_Gas,aes(year,avgMPG))+geom_point()+geom_smooth()+xlab('Year')+ylab('Average MPG')+ggtitle('Gasoline Cars')
#绘制出纯汽油汽车MPG与year之间的关系
纯汽油汽车MPG与year的关系
ggplot(mpgByYr_Gas,aes(year,avgHghy))+geom_point()+geom_smooth()+xlab('Year')+ylab('Average Highway MPG')+ggtitle('Gasoline Cars')
纯汽油汽车avgHghy与year的关系
ggplot(mpgByYr_Gas,aes(year,avgCity))+geom_point()+geom_smooth()+xlab('year')+ylab('Average City MPG')+ggtitle('Gasoline Cars')
纯汽油汽车avgCity与year的关系
从上述结果中可以得出较为准确的结论
考察近年来大马力车的产量是否降低,如果是这样,就可以解释前述的这种增长
首先明确大功率的汽车是否汽车燃油效率更低
变量displ表示引擎的排量,单位为升
typeof(gasCars$displ)#查看displ的类型,如果不是数值型则需要进行处理:
#gasCars$displ<-as.numeric(gasCars$displ)
ggplot(gasCars,aes(displ,comb08))+geom_point()+geom_smooth()#绘制排量与燃油效率的散点图与曲线图
排量与燃油效率的散点图与曲线图

从图中可以看到,引擎排量和燃油效率之间为负相关,也就是说排量小的车燃油效率会更高

接下来考察一下近年来是否生产了更多的小排量汽车,这样就可以解释燃油效率最近有大幅的提升这个问题了

avgCarsize<-ddply(gasCars,~year,summarise,avgDispl=mean(displ))
ggplot(avgCarsize,aes(year,avgDispl))+geom_point()+geom_smooth()+xlab('Year')+ylab('Average Engine Displacement(L)')

在图中我们可以看到:平均引擎排量在2007年左右之后有一个显著的下降

为了更好的看到对燃油效率的影响,现在逐年绘制出MPG和排量之间的关系

生成一个新的数据框byYear,包含每年的平均燃油效率和平均引擎排量

byYear<-ddply(gasCars,~year,summarise,avgMPG=mean(comb08),avgDispl=mean(displ))
#分解数据框,将平均燃油效率和平均引擎排量分开,用reshape2包中的melt()函数
byYear2<-melt(byYear,id='year')
#得到的byYear2中的行数为byYear的两倍
levels(byYear2$variable)<-c('Average MPG','Avg engine displacement')#更改变量名称

接下来在一个窗口内绘制两幅图

ggplot(byYear2,aes(year,value))+geom_point()+geom_smooth()+facet_wrap(~variable,ncol=1,scales='free_y')+xlab('Year')+ylab('')

从这个图中可以看到:引擎排量的大小在2008年之前总体是增加的,尤其是2006-2008年间大排量引擎汽车的数量有一个明显的增大

从2009年起,引擎排量的平均大小有了显著的下降,这一现象在一定程度上解释了燃油效率的显著提升

2005年之前,引擎排量一直在增加但是燃油效率基本上没有变化,这说明在这些年间引擎的效率一直在提升

2006-2008年间虽然平均引擎排量有一个显著的提升,但是MPG和前几年差不多,需要对这个问题进行更多的研究

将这一趋势放到小排量引擎上,比较自动挡与手动挡汽车的排量

gasCars4<-subset(gasCars,cylinders=='4')#四缸车型
ggplot(gasCars4,aes(factor(year),comb08))+geom_boxplot()+facet_wrap(~trany2,ncol=1)+theme(axis.text.x=element_text(angle=45))+labs(x='Year',y='MPG')
#ggplot2生成一个箱线图,展示了每一年值的分布情况
从上图中可以得出一个大概的结论:手动挡车型的燃油效率要略高于自动挡车型,但是看起来手动挡车型的数量越来越少

接下来考察每一年份手动挡车型的占比

ggplot(gasCars4,aes(factor(year),fill=factor(trany2)))+geom_bar(position='fill')+labs(x='Year',y='Proportion of cars',fill='Transmission')+theme(axis.text.x=element_text(angle=45))+geom_hline(yintercept=0.5,linetype=2)
从上图中可以明显地看出:近年来手动挡车型的占比有大幅度的下降

另外一个可能影响车辆燃油效率的因素是气缸数量,近年来四缸车型越来越多

接下来研究汽车的生产商和型号是如何随时间改变的

生产商和车型随时间变化如何影响燃油效率

carsMake<-ddply(gasCars,~year,summarise,numberOfMakes=length(unique(make)))
ggplot(carsMake,aes(year,numberOfMakes))+geom_point()+geom_smooth()+labs(x='Year',y='Number of available makes')+ggtitle('Four cylinder cars')

生产四缸车型的厂商数量随Year变化的情况

uniqMakes<-dlply(gasCars4,~year,function(x) unique(x$make))
commonMakes<-Reduce(intersect,uniqMakes)#Reduce()函数是一个高级函数,其输入为intersect()函数,对每一个元素求交集得出结果

[1] "Honda"      "Toyota"     "Volkswagen"
[4] "Chevrolet"  "Mazda"      "Subaru"    
[7] "Jeep"

以上结果展示的是每一年都会出现的制造商名单

carsCommonMakes4<-subset(gasCars4,make %in% commonMakes)
avgMPG_commonMakes<-ddply(carsCommonMakes4,~year+make,summarise,avgMPG=mean(comb08))
ggplot(avgMPG_commonMakes,aes(year,avgMPG))+geom_line()+facet_wrap(~make,nrow=3)

上述制造商产品的燃油效率变化情况

通过以上的分析,可以初步得出结论:汽车的燃油效率在不断的提升(MPG数值变大),其中不仅新能源车型的占比得到提高,在可能影响到MPG的因素中,排量,气缸数,变速箱类型等都会导致MPG的提升

汽车燃料效率分析实例相关推荐

  1. 汽车专场 | 新能源汽车动力电池PACK CAE分析实例解读

    一.PACK为什么需要CAE分析? PACK是新能源汽车最重要的组成部分,可称之为心脏,电池系统需要满足汽车运营条件下的苛刻力学环境的要求.按照传统研发方式,设计-样包-测试-优化-样包-测试,反复循 ...

  2. JVM指令分析实例四(数组、switch)

    本篇为<JVM指令分析实例>的第四篇,相关实例均使用Oracle JDK 1.8编译,并使用javap生成字节码指令清单. 前几篇传送门: JVM指令分析实例一(常量.局部变量.for循环 ...

  3. 《简明电路分析》——1.6节简单电路分析实例

    本节书摘来自华章社区<简明电路分析>一书中的第1章,第1.6节简单电路分析实例,作者钟洪声 吴 涛 孙利佳,更多章节内容可以访问云栖社区"华章社区"公众号查看 1.6 ...

  4. flac3d命令流实例大全_ANSYS APDL 疲劳分析实例附命令流

    图1为一个角型板,边界条件:底端固定,顶端承受0-30kpa的压力,计算指定位置的疲劳寿命,表1给出了材料的S-N数据:图1给出了疲劳分析模型的几何尺寸. 表1 材料的N-S数据 N 100 200 ...

  5. c语言条件编译的例子,C语言条件编译分析实例

    C语言条件编译分析实例 1.利用#ifdef / #endif 将程序功能模块包括进去,以向某用户提供该功能. 在程序首部定义#define HNLD: #ifdef HNLD include&quo ...

  6. python爬取天气预报源代码_python抓取天气并分析 实例源码

    [实例简介] Python代码抓取获取天气预报信息源码讲解.这是一个用Python编写抓取天气预报的代码示例,用python写天气查询软件程序很简单.这段代码可以获取当地的天气和.任意城市的天气预报, ...

  7. PHP5异常处理,PHP5异常处理分析实例

    PHP5异常处理分析实例 导语:PHP 5 添加了类似于其它语言的异常处理模块.下面的是百分网小编为大家搜集的用实例分析PHP5异常处理实例,希望对你能有所帮助. <?php /** * ■㈠P ...

  8. MPEG2-PS格式分析实例

    一. PS 包头格式 1.PS 包头格式 包起始码字段  pack_start_code 值为'0000 0000 0000 00000000 0001 1011 1010' (0x000001BA) ...

  9. 软件的接口设计图_面向服务架构(SOA)的汽车软件分析和设计

    --后台回复"资料",领取特斯拉专利技术解析报告-- 文章转自:联合电子 本文将先重温下SOA架构的核心要素与优势,并重点讨论话题"面向服务架构(SOA)的汽车软件分析和 ...

最新文章

  1. 在博客园添加Lisp(或其它)代码高亮
  2. tcp连接的三次握手
  3. 父类与子类之间的关系
  4. Could not resolve placeholder 'jdbc.url' in value ${jdbc.url}
  5. 我国企业对开源社区的贡献度_开源社区对我意味着什么
  6. 【转】VLAN(Virtual LAN)“虚拟局域网”
  7. java中有没有计时器_简单说一下java中计时器,实际需要,没有详解
  8. static与get属性的作用
  9. 用于UML前端展示的jsuml2插件
  10. 土壤高光谱数据预处理与变换
  11. 简述delete与delete[]的区别
  12. Java版取色器(2)——安装IntelliJ IDEA
  13. 小学steam计算机课程案例,基于STEAM教育的小学信息技术课程案例开发
  14. 本草纲目pdf彩图版下载_本草纲目中药图谱大全书PDF下载
  15. 2021-02-14马克思主义概论
  16. 解决 Github用户名 变为 invalid-email-address 问题
  17. 面试题53:vue数据的双向绑定原理(如何实现vue的双向绑定)
  18. NSDate 农历节日
  19. 做测试为什么要掌握mysql_软件测试工作要掌握的知识
  20. 元宇宙带来的游戏变革会是怎样的?

热门文章

  1. centos识别移动硬盘U盘,需安装【ntfs-3g】
  2. mysql 常用计算函数_关于MySQL常用的一些函数以及一些计算
  3. cmd安装mysql_MySQL windows下cmd安装操作
  4. 华为ax3怎么接光纤sc接口_光纤收发器接口类型、连接、指示灯说明及故障症断...
  5. 基于MDC300的神经网络开发
  6. 利用server酱推送消息和定时库:APScheduler
  7. Python之“可变”的tuple
  8. Chrome禁用缓存
  9. 概率校准Probability Calibration
  10. Spring Boot的Properties和YAML配置文件详解: