R分析实例1

                         汽车燃料效率

#汽车燃料效率数据来源#'http://www.fueleconomy.gov/feg/epadata/vehicles.csv.zip'

vehicles<-read.csv('C:\\Users\\Administrator\\desktop\\R\\vehicles.csv',stringsAsFactors = F,header = T)#导入数据

head(vehicles) #查看导入的数据

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" 

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"  

......

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的置信区间)

ggplot(mpgByYr,aes(year,avgHghy))+geom_point()+geom_smooth()+xlab('Year')+ylab('Average Highway MPG')+ggtitle('All Cars')

#绘制avgHghy和Year之间的关系

ggplot(mpgByYr,aes(year,avgCity))+geom_point()+geom_smooth()+xlab('Year')+ylab('Average City MPG')+ggtitle('All Cars')#绘制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之间的关系

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')

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的提升。


---------------------

作者:RH_Wang

来源:CSDN

原文:https://blog.csdn.net/RH_Wang/article/details/81021371

版权声明:本文为博主原创文章,转载请附上博文链接!

你可能感兴趣的:(R分析实例1)