久久96国产精品久久久-久久发布国产伦子伦精品-久久精品国产精品青草-久久天天躁夜夜躁狠狠85麻豆

技術員聯盟提供win764位系統下載,win10,win7,xp,裝機純凈版,64位旗艦版,綠色軟件,免費軟件下載基地!

當前位置:主頁 > 教程 > 服務器類 >

數據處理包dplyr的函數用法總結教程

來源:技術員聯盟┆發布時間:2017-09-12 12:00┆點擊:

  dplyr專注處理dataframe對象, 并提供更穩健的與其它數據庫對象間的接口。

  一、5個關鍵的數據處理函數:

  select() 返回列的子集

  filter() 返回行的子集

  arrange() 根據一個或多個變量對行排序。

  mutate() 使用已有數據創建新的列

  summarise() 對各個群組匯總計算并返回一維結果。

  Tips:

  1、select()

  Dplyr包有下列輔助函數,用于在select()中選擇變量:

  starts_with("X"): 以 "X"開頭的變量名

  ends_with("X"): 以 "X"結束的變量名

  contains("X"): 包含 "X"的變量名

  matches("X"): 匹配正則表達式“x"的變量名

  num_range("x", 1:5): 變量名為 x01, x02, x03, x04 and x05

  one_of(x): 出現在字符向量x中的所有變量名

  在select()中直接使用列時不需要引用"",但使用上述輔助函數時必須引用""。

  2、filter()

  R 有一系列邏輯表達式可用于filter()中:

  x < y;x <= y;x == y;x != y;x >= y;x > y;x %in% c(a, b, c)

  示例:

  filter(df, a > 0, b > 0)

  filter(df, !is.na(x))

  3、arrange()

  arrange()默認從小到大排序,在arrange()中使用desc()作用于變量可以使之從大到小排序.

  4、mutate()

  mutate()允許在同一次調用中使用新變量來創建下一個變量,例如:

  mutate(my_df, x = a + b, y = x + c)

  5、 summarise()

  R的下列聚合函數可用于 summarise()中

  min(x) - 最小值.

  max(x) - 最大值

  mean(x) - 平均值

  median(x) - 中位數

  quantile(x, p) - x的第P個分位數

  sd(x) -標準差

  var(x) - 方差

  IQR(x) - 四分位數

  diff(range(x)) - x值的范圍

  dplyr包自身提供了一些有用的聚合函數:

  first(x) - 向量x中的第1個元素

  last(x) - 向量x中的最后1個元素

  nth(x, n) - 向量x中的第n個元素

  n() - data.frame中的行數或 summarise() 描述的觀測組的數量

  n_distinct(x) - 向量x中唯一值的數量

  二、管道函數%>%

  dplyr包中特有的管道函數%>%,將上一個函數的輸出作為下一個函數的輸入。

  %>%運算符允許從參數列表中提取函數的第一個參數,并放置在%>%前面。

  下面兩條指令相等:

  mean(c(1, 2, 3, NA), na.rm = TRUE)

  c(1, 2, 3, NA) %>% mean(na.rm = TRUE)

  三、分組函數group_by()

  對數據集定義群組。然后可對各個群組分別進行匯總統計。

  通過 group_by() 添加了分組信息后,mutate(), arrange() 和 summarise() 函數會自動對這些 tbl 類數據執行分組操作。

  group_by(dataframe,colnames1,colnames2,…)

  四、連接數據(joins)

  1、6種連接函數如下:

  left_join(dataset1,dataset2)

  right_join(dataset1,dataset2)

  inner_join(dataset1,dataset2,by=c(“”))

  full_join(dataset1,dataset2, by = c("first", "last"))

  semi_join(dataset1,dataset2, by = c("first", "last"))

  anti_join(dataset1,dataset2, by = c("first", "last"))

  前4種屬于變形連接(mutating joins),后2種屬于過濾連接(filtering joins)。

  semi-joins基于第二個數據集的信息來過濾第一個數據集的數據。anti-joins找出合并時哪些行不能匹配第二個數據集

數據處理包dplyr的函數用法總結教程 三聯

  2、key值

  R語言的 data frames可在 row.names屬性中存儲重要信息,雖然不是存儲數據的好方式卻很常見。如果數據集的主關鍵字在row.names中,將難以與其他數據集連接。一種解決方法是使用tibble包(tibble:a data frame with class tbl_df)中的rownames_to_column()函數,返回該數據集的副本,并且行名作為一列增加到該數據中。

  library(tibble)

  rownames_to_column(data, var="name")

  如果兩個數據集有相同的列名,但代表的事物不同,并且by參數不包含這些重復的列名,dplyr會忽略這些列名,并對相同的列名增加.x和 .y來幫助區分列。

  當兩個數據集中相同的事物有不同的列名,要完成合并,將by設置為一個命名向量。向量的名字為主數據集中的列名,向量的值為第二個數據集中的列名。例如:

  x %>% left_join(y, by = c("x.name" = "y.name"))

  完成連接后保留主數據集中的列名。

  3、多個數據集的連接

  Purrr包中的 reduce()函數對多個數據集重復應用某函數,可用于連接多個數據集,與dplyr的join類函數配合使用,例如:

  library(purrr)

  list(data1,data2,data3) %>% reduce(left_join,by = c("first","last"))

  五、集合操作(set operations)