美文网首页Learning R@IT·互联网大数据
R语言之数据处理---数据操作

R语言之数据处理---数据操作

作者: willnight | 来源:发表于2017-05-23 12:50 被阅读78次

    结束了前面的可视化的专题,接下来会写一些具体数据处理方面的东西。文中涉及到的处理包的话,在cran上都有,直接install.packages()就可以获取!!

    一·获取dataframe的子集

    ##简单的获取行和列
    iris[1:9,]
    iris[,2:5]
    iris[1:9,2:5]
    
    ##通过中括号条件选择来选取,可以用逻辑连接符来限制多重条件,非常的方便
    iris[iris$SepalLength > 7,]
    iris[iris$SepalLength > 7 & iris$SepalWidth > 3 & iris$PetalLength >6,]
    
    ##split拆分,f参数表示按照拆分的列,拆分后得到的是列表
    iris_splited<-split(iris,f=iris$Species)
    
    1.png
    2.png
    3.png
    4.png
    5.png
    6.png

    二.reshape2包蹂躏数据

    #上面所说的方法用来分割比较方便,但涉及到计算还是reshape2包方便
    ##第一个函数dcast,分组计算,第一个参数是数据集,第二个参数划分特征,第三是需要计算的特征列,第四个参数是计算函数
    dcast(subdata,Species~.,value.var = 'PetalWidth',fun = mean)
    ##但由于dcast只能正对一个数值列,如果我要同时求其他数值列的平均该如何解决,这就涉及到melt先将原来的宽型数据转化成长型数据(也就是变量一列,数值一列)
    ##melt重构数据,第一个参数数据对象,第二个分类变量。
    iris_long<-melt(iris,id = "Species")
    head(iris_long)
    ##再dcast分类处理
    dcast(iris_long,Species~variable,value.var='value',fun=mean)
    
    
    1.png
    2.png
    3.png
    #用reshape2中tips的数据集再深入熟悉下
    ##dcast value.var智能带一个数值特征,分类变量可以多个
    str(tips)
    dcast(tips,sex~.,value.var = 'tip',fun = mean)
    dcast(tips,sex~size,value.var = 'tip',fun = mean)
    
    ##糅合再计算
    tips_melt<-melt(data = tips,id.vars = c('sex','smoker','day','time','size'))
    str(tips_melt)
    head(tips_melt)
    
    ##dcast计算糅合后的数据集就可以同时算出total_bill,tip,当然怎么分组的话可以随心所欲。
    dcast(tips_melt,sex~variable,value.var = 'value',fun=mean)
    dcast(tips_melt,sex+time~variable,value.var = 'value',fun=mean)
    
    1.png
    2.png
    3.png
    4.png

    三.plyr包对数据处理

    ##还是基于tips数据集,定义计算小费和总餐费的比率函数
    fee_fun<-function(x){
      sum(x$tip)/sum(x$total_bill)
    }
    ##plyr分类处理ddply,dd表示输入时dataframe输出是dataframe,以此类推有dlply,ld,ll等等,还是很好记的,但处理函数要涉及所有的数值列
    ddply(tips,"sex",fee_fun)
    ddply(tips,sex~smoker,fee_fun)
    ddply(tips,sex~smoker+time,fee_fun)
    
    
    1.png

    四.数据的连接

    ##自定义量df
    df1<-data.frame(id=c(1,2,3),gender=c(23,24,26))
    df2<-data.frame(id=c(2,4,1),name=c("d","w","t"))
    df1
    df2
    ##merge连接,会自动连接
    merge(df1,df2,by="id")
    ##join连接,type可以选择连接方式
    join(df1,df2,by='id',type='right')
    join(df1,df2,by='id',type='left')
    join(df1,df2,by='id')
    
    1.png
    2.png

    数据处理部分的一些常用的知识就分享到这,一些错误或不足之处望各位谅解,笔者也是个初学者,望能共同进步!!!以后会继续分享学习心得。。

    相关文章

      网友评论

      本文标题:R语言之数据处理---数据操作

      本文链接:https://www.haomeiwen.com/subject/gdswxxtx.html