zoukankan      html  css  js  c++  java
  • R语言扩展包dplyr——数据清洗和整理

     

    R语言扩展包dplyr——数据清洗和整理

    标签: 数据R语言数据清洗数据整理
     分类:

    该包主要用于数据清洗和整理,coursera课程链接:Getting and Cleaning Data

    也可以载入swirl包,加载课Getting and Cleaning Data跟着学习。

    如下:

    [html] view plain copy
     
    1. library(swirl)  
    2. install_from_swirl("Getting and Cleaning Data")  
    3. swirl()  

    此文主要是参考R自带的简介:Introduce to dplyr

    1、示范数据

    [html] view plain copy
     
    1. > library(nycflights13)  
    2. > dim(flights)  
    3. [1] 336776     16  
    4. > head(flights, 3)  
    5. Source: local data frame [3 x 16]  
    6.   
    7.   year month day dep_time dep_delay arr_time arr_delay carrier tailnum flight origin dest air_time  
    8. 1 2013     1   1      517         2      830        11      UA  N14228   1545    EWR  IAH      227  
    9. 2 2013     1   1      533         4      850        20      UA  N24211   1714    LGA  IAH      227  
    10. 3 2013     1   1      542         2      923        33      AA  N619AA   1141    JFK  MIA      160  
    11. Variables not shown: distance (dbl), hour (dbl), minute (dbl)  

    2、将过长的数据整理成友好的tbl_df数据
    [html] view plain copy
     
    1. > flights_df <- tbl_df(flights)  
    2. > flights_df  

    3、筛选filter()

    [html] view plain copy
     
    1. > filter(flights_df, month == 1, day == 1)  
    2. Source: local data frame [842 x 16]  
    3.   
    4.    year month day dep_time dep_delay arr_time arr_delay carrier tailnum flight origin dest air_time  
    5. 1  2013     1   1      517         2      830        11      UA  N14228   1545    EWR  IAH      227  
    6. 2  2013     1   1      533         4      850        20      UA  N24211   1714    LGA  IAH      227  
    筛选出month=1和day=1的数据

    同样效果的,

    [html] view plain copy
     
    1. flights_df[flights_df$month == 1 & flights_df$day == 1, ]  

    4、选出几行数据slice()
    [html] view plain copy
     
    1. slice(flights_df, 1:10)  

    5、排列arrange()
    [html] view plain copy
     
    1. >arrange(flights_df, year, month, day)  
    将flights_df数据按照year,month,day的升序排列。

    降序

    [html] view plain copy
     
    1. >arrange(flights_df, year, desc(month), day)  
    R语言当中的自带函数
    [html] view plain copy
     
    1. flights_df[order(flights$year, flights_df$month, flights_df$day), ]  
    2. flights_df[order(desc(flights_df$arr_delay)), ]  
    6、选择select()

    通过列名来选择所要的数据

    [html] view plain copy
     
    1. select(flights_df, year, month, day)  
    选出三列数据
    使用:符号
    [html] view plain copy
     
    1. select(flights_df, year:day)  
    使用-来删除不要的列表
    [html] view plain copy
     
    1. select(flights_df, -(year:day))  

    7、变形mutate()

    产生新的列

    [html] view plain copy
     
    1. > mutate(flights_df,  
    2. +        gain = arr_delay - dep_delay,  
    3. +        speed = distance / air_time * 60)  
    8、汇总summarize()
    [html] view plain copy
     
    1. <pre name="code" class="html">> summarise(flights,  
    2. +           delay = mean(dep_delay, na.rm = TRUE)  
    
    

    求dep_delay的均值

    9、随机选出样本

    [html] view plain copy
     
    1. sample_n(flights_df, 10)  
    随机选出10个样本
    [html] view plain copy
     
    1. sample_frac(flights_df, 0.01)  
    随机选出1%个样本

    10、分组group_py()

    [html] view plain copy
     
    1. by_tailnum <- group_by(flights, tailnum)  
    2. #确定组别为tailnum,赋值为by_tailnum  
    3. delay <- summarise(by_tailnum,  
    4.                    count = n(),  
    5.                    dist = mean(distance, na.rm = TRUE),  
    6.                    delay = mean(arr_delay, na.rm = TRUE))  
    7. #汇总flights里地tailnum组的分类数量,及其组别对应的distance和arr_delay的均值  
    8. delay <- filter(delay, count > 20, dist 2000)  
    9. ggplot(delay, aes(dist, delay)) +  
    10.     geom_point(aes(size = count), alpha = 1/2) +  
    11.     geom_smooth() +  
    12.     scale_size_area()  


    结果都需要通过赋值存储

    [html] view plain copy
     
    1. a1 <- group_by(flights, year, month, day)  
    2. a2 <- select(a1, arr_delay, dep_delay)  
    3. a3 <- summarise(a2,  
    4.   arr = mean(arr_delay, na.rm = TRUE),  
    5.   dep = mean(dep_delay, na.rm = TRUE))  
    6. a4 <- filter(a3, arr > 30 | dep > 30)  

    11、引入链接符%>%

    使用时把数据名作为开头,然后依次对数据进行多步操作:

    [html] view plain copy
     
    1. flights %>%  
    2.     group_by(year, month, day) %>%  
    3.     select(arr_delay, dep_delay) %>%  
    4.     summarise(  
    5.         arr = mean(arr_delay, na.rm = TRUE),  
    6.         dep = mean(dep_delay, na.rm = TRUE)  
    7.     ) %>%  
    8.     filter(arr > 30 | dep > 30)  
    前面都免去了数据名

    若想要进行更多地了解这个包,可以参考其自带的说明书(60页):dplyr

  • 相关阅读:
    mysql 数据库信息常用命令
    Linux 目录详细介绍
    RPC调用和HTTP调用的区别
    maven 常见命令
    SpringCloud微服务常见组件理解
    Java实现CORS跨域请求
    Java 静态代理和动态代理例子
    Mabatis中#{}和${}的区别
    针对海量数据和高并发的主要解决方案
    SOAP webserivce 和 RESTful webservice 对比及区别
  • 原文地址:https://www.cnblogs.com/awishfullyway/p/6677061.html
Copyright © 2011-2022 走看看