R語言擴展包dplyr——數據清洗和整理

 

R語言擴展包dplyr——數據清洗和整理

標籤: 數據R語言數據清洗數據整理
 分類:

該包主要用於數據清洗和整理,coursera課程連接:Getting and Cleaning Dataweb

也能夠載入swirl包,加載課Getting and Cleaning Data跟着學習。函數

以下:post

 

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

 

此文主要是參考R自帶的簡介:Introduce to dplyr學習

一、示範數據spa

 

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

二、將過長的數據整理成友好的tbl_df數據

 

 

[html]  view plain  copy
 
  1. > flights_df <- tbl_df(flights)  
  2. > flights_df  

 

 

三、篩選filter().net

 

[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的數據

 

一樣效果的,code

 

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

四、選出幾行數據slice()

 

 

[html]  view plain  copy
 
  1. slice(flights_df, 1:10)  

五、排列arrange()

 

 

[html]  view plain  copy
 
  1. >arrange(flights_df, year, month, day)  
將flights_df數據按照year,month,day的升序排列。

 

降序xml

 

[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)), ]  

 

 

六、選擇select()

經過列名來選擇所要的數據htm

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

七、變形mutate()

 

產生新的列

 

[html]  view plain  copy
 
  1. > mutate(flights_df,  
  2. +        gain = arr_delay - dep_delay,  
  3. +        speed = distance / air_time * 60)  

 

 

八、彙總summarize()
[html]  view plain  copy
 
  1. <pre name="code" class="html">> summarise(flights,  
  2. +           delay = mean(dep_delay, na.rm = TRUE)  
 
 

求dep_delay的均值

 

 

九、隨機選出樣本

 

[html]  view plain  copy
 
  1. sample_n(flights_df, 10)  
隨機選出10個樣本
[html]  view plain  copy
 
  1. sample_frac(flights_df, 0.01)  
隨機選出1%個樣本

 

十、分組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)  

十一、引入連接符%>%

 

使用時把數據名做爲開頭,而後依次對數據進行多步操做:

 

[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

相關文章
相關標籤/搜索