クリーニング動作データベースを終了(R:dplyr、tidyr、lubridate)

以前にコースを旋回学ぶために基本的なデータクリーニング操作、再び含むを再配置します:

  1. dplyrのパッケージは、アレンジ変異、フィルタを選択し 、GROUP_BYを要約する機能、および%>%の導管動作オペレータ(PIP動作)、「次に」を意味します。
  2. tidyrのパッケージには、別々の、広がり収集機能を。
  3. lubridateのパッケージ日付可変レコード更新操作。

1、dplyrパッケージ(新しい、GROUP_BYグループ統計を変異させ、ソートアレンジ、フィルタラインを選択し、列選択を選択し、概要をまとめたもの)

(1)最初のデータを読み出し、データについての情報を表示します。

1つの ライブラリー(dplyr)
 2  
3  ###イントロ
 4 path2csv < - file.path(' 2014-07-08.csv ' 5 DF < - read.csv(path2csv、としてはなる = TRUE)
 6  DIM(DF)
 7  頭(DF)
 8 CRAN < - tbl_df(DF)
 9 CRAN

 (2)データの抽出、フィルタリング、ソート、および他の操作のためのいくつかの一般的な機能を使用して:

1  #基本的な機能
2 SELECT(CRAN、ip_id、パッケージ、国)   #1 CRANデータセット名、ip_id、パッケージは、国がある列名
。3 SELECT(CRAN、r_arch:国)   #1 r_archは:国にr_archから採取した列を表し国の列
。4 SELECT(CRAN、国:r_arch)   #1 ターンソート
5。 SELECT(CRAN、-time)  、時間列を取ることはありません
6。 SELECT(CRAN、 - (X:サイズ))  は、Xの列のサイズを取ることはありません
7。 
8。フィルタ(CRAN、パッケージ== " スワール"#1 "渦"すべての行としてパッケージをフィルタリングCRANデータセット、
9フィルタ(CRAN、r_version == " 3.1.1 "、国== " 米国"2のフィルタ
10のフィルタ(CRAN、r_version <= " 3.0.2 "、国== "IN " 11。フィルタ(CRAN、国== " 米国" | ==国"#は、正規表現の追加12があるフィルタ(CRAN、!である).Na(r_version)  すべての非空の行スクリーニングr_version 13は14(cran2、ip_id)配置   #のキーを押して行(デフォルトの順序を昇順ip_id)15整列( cran2、DESC(ip_id))  行の降順によってはip_id 16

 


(cran2、パッケージ、ip_id)アレンジ   #の列をソートプレスパッケージ、ip_idの並べ替え
17  
18であるのmutate(cran3、SIZE_MBサイズ= / 2 ^ 20である)   既存のSIZE_MBの新しいカラムを使用して
19のmutate(cran3、SIZE_MBサイズ= / 20 ^ 2、SIZE_GB = SIZE_MB / 2 ^ 10)  二つの列の作成
20  
21集計ライン(cran3、avg_bytes =平均(サイズ))   #1 、要約を全体の統計情報を表示

(3)グループの統計情報や並べ替え:

1 by_package <-group_by(CRAN、パッケージ)   統計パッケージカラムによってグループ化された
2集計行(by_package、平均(サイズ))  記録された各グループの平均パケット・サイズを計算した後
3。 pack_sum < -集計(by_package、   #1 パケットデータby_package要約統計量
。4                        COUNT = N-()、  N-()各統計周波数   
。5                        UNIQUE = n_distinct(ip_id)、  どのように多くの異なる各ip_id数える
。6つの                        国= n_distinct(国)、
 。7                        avg_bytes = 平均(サイズ) )
 。8  
。9分位(pack_sum $ UNIQUE、ちゃったごめんなさい= 150)  計算一意の99%分位
10 top_unique <εフィルタ(pack_sum、ユニーク> 465)   #1 フィルタ465は、記録周波数よりも大きい
。11 top_unique_sorted < - アレンジ(top_unique、DESC(一意))
 12は top_countries < -フィルタ(pack_sum、国> 60 13である -結果1 < アレンジ(top_countries、DESC(国)、avg_bytes)
 14  プリント(結果1)

(4)工程で、ネストされたコンパクト(3)を使用して:

1結果2 < -
 2    アレンジ(
 3      フィルタ(
 4        集計(   分组数据用集計进行汇总
5          GROUP_BY(CRAN、
 6                   、パッケージ
 7          )、
 8          カウント= N()、
 9          ユニーク= n_distinct(ip_id)、
 10          カ国= n_distinct(国)、
 11          avg_bytes = 平均値(大きさ)
 12        )、
 13        カ国> 60
 14      )、
 15      DESC(国)、
 16     avg_bytes
 17  18  
19  プリント(結果2)を

(5)操作の記号表現の間%>%を使用して(3):

1  あなたがそれを読んで、あなたはと%>%演算子を発音することができます
2  「を」言葉。
3 result3 < -
 4    CRAN%>%
 5    GROUP_BY(パッケージ)%>%
 6    集計(=カウント)(nは、
 7              ユニーク= n_distinct(ip_id)、
 8              カ国= n_distinct(国)、
 9              avg_bytes = 平均(サイズ)
 10    )%>%
 11    フィルタ(国> 60)%>%
 12    (DESC(国アレンジ)、avg_bytes)
 13  
14  コンソールへ印刷結果
15を 印刷(result3)

(6)機能と、いくつかのパイプシンボルと一緒に使用:

1つの CRAN%>%
 2    を選択し(ip_id、国、パッケージサイズ)%>%
 3    のmutate(SIZE_MB =サイズ/ 2 ^ 20)%>%
 4    フィルタ(SIZE_MB <= 0.5)%>%
 5    アレンジ(DESC(SIZE_MB ))%>%
 6    印刷

2、tidyrパッケージ

(1)ギャザー()和別々の():

1つの ライブラリー(tidyr)
 2  ライブラリ(readr)
 3  ライブラリ(dplyr)
 4  
5 students2%>%
 6    ギャザー(sex_class、カウント、-grade)%>%
 7    別個(sex_class、C(" 性別"" クラス")) %>%
 8    印刷

       

(students2、sex_class、COUNT、グレードの)収集以下 
#gatherキーと値のペアに列を収集し、students2データセット、最初の列のグレード収集参加せず、キーと、放電として残りのデータ列名sex_class(キー)と(値)をカウントダウン。

次の列は、二つの別々のsex_class列に分割されます。別々:複数の列に1列を区切ります。

(2)スプレッド():#スプレッド:複数の列を横切って、キーと値のペアを広げ。

1 students3 %>%
2   gather(class, grade, class1:class5, na.rm = TRUE) %>%
3   #name未参与gather,因此照原格式输出
4   spread(test, grade) %>%   
5   # spread:Spread a key-value pair across multiple columns.
6   mutate(class=parse_number(class)) %>%
7   # parse_numeric    Extract numeric component of variable.
8   print

(3)行合并以及列合并:

 1 student_info <- students4 %>%
 2   select(id, name, sex) %>%
 3   unique() %>%  #去除重复记录
 4   print
 5 
 6 gradebook <- students4 %>%
 7   select(id,class,midterm,final) %>%
 8   print
 9 
10 merge.data.frame(gradebook,student_info,by="id")
11 #列合并不同行数的数据框
12 
13 passed<-mutate(passed,status="passed")
14 failed<-mutate(failed,status="failed")
15 bind_rows(passed,failed)
16 #行合并俩个数据框

  

 

(4)几个函数一起使用:

1 sat %>%
2   select(-contains("total")) %>%
3   gather(part_sex, count, -score_range) %>%
4   separate(part_sex, c("part", "sex")) %>%
5   group_by(part,sex) %>%
6   mutate( total = sum(count),  #统计每组频数
7           prop = count / total) %>%  #统计每组里面各分数段比例
8   print

3、lubradate包

(1)获取当前日期时间

1 library(lubridate)

wday(today()) #get the day of the week,such that 1 = Sunday, 2 = Monday

(2)时间数据的录入

1 ymd("1989-05-17")
2 ymd("1989 May 17")
3 mdy("March 12,1975")
4 dmy(25081985)
5 ymd("1920/1/2")
6 
7 hms("03:22:14")
8 ymd_hms(c("2010-04-14-04-35-59", "2010-01-01 12:00:00"))
9 ymd_hms(now())

(3)更新时间数据,计算时间间隔

 

おすすめ

転載: www.cnblogs.com/lhjc/p/11295323.html