日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

r语言必学的十个包肖凯_30 天学会R DAY 14:R语言必学包dplyr

發布時間:2025/4/16 编程问答 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 r语言必学的十个包肖凯_30 天学会R DAY 14:R语言必学包dplyr 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

原標題:30 天學會R DAY 14:R語言必學包dplyr

第14天 R語言必學包dplyr

R語言非常講究數據的整理,我們在7-13天的R語言學習內容中,著重都是關于R語言的整理,各種方法對數據進行整理,查看,對變量進行轉換。dplyr包,主要也用于數據清洗和整理,該包專注dataframe數據格式,從而大幅提高了數據處理速度。這個包對數據處理的方式相對之前的方法,更加簡單,是醫學數據分析必須要掌握的包。

dplyr包存在著上百個函數來幫助進行數據的整理,由于篇幅的關系,本文對主要的函數進行介紹,包括下述五個函數用法:

? 篩選: filter()

? 排列: arrange()

? 選擇: select()

? 變形: mutate()

? 匯總: summarise()

? 分組: group_by()

? 合并:join()

首先,安裝和導入dplyr

install.packages("dplyr")

library(dplyr)

導入之前數據集

t1

t2

str(t2)

str(t1)

1 篩選:filter()

按給定的邏輯判斷篩選出符合要求的子數據集,之前我們已經通過大量的方法介紹過子集產生的方法,而filter()方法則更直接。

#產生t11數據集,SBP收縮壓>=140的子集

t11=140)

#產生t11數據集,SBP收縮壓>=140且DBP>=90舒張壓的子集

t12=140,DBP>=90)

# 產生t11數據集,SBP收縮壓>=140或DBP>=90舒張壓的子集

t13=140 | DBP>=90)

#產生t11數據集,SBP收縮壓>=140且DBP>=90舒張壓的子集

t14=140 & DBP>=90)

str(t11)

str(t12)

str(t13)

# 上述程序,如果用常規R語言,則要

t12=140 & t1$DBP>=90, ]

相對來說更為復雜。

#分類數據轉換

t21

2 排列: arrange()

排序功能,我們之前也學過,比如order(). Arrange 方法其實也更簡單。

#根據SBP從小到大進行排序

arrange(t1,SBP)

#根據DBP從大到小進行排序

arrange(t1,desc(DBP))

#根據SBP和DBP,從小到大進行排序,先排SBP,SBP相同時,再排DBP

arrange(t1, SBP, DBP)

#根據SBP和DBP,從大到小進行DBP排序,DBP相同時,再排從小到大根據SBP排序

arrange(t1, desc(DBP), SBP)

3 選擇: select()

用列名作參數來選擇子數據集,這個功能很有意思,雖然醫學數據分析用的不多。

t15

t16

t17

t18

select ( ) 更多的參數設置如下表

4.變形: mutate()

對已有列進行數據運算并添加為新列,這個是非常重要的數據轉換功能。

# 計算BMI指數

t19

# 可以同時產生多個變量

t110

mutate( )可以調用的函數很多,以下是部分函數

log(), log2(), log10(): 對值求 log;

lead(), lag(): 返回序列中當前位置前第幾個值或后第幾個值;

cume_dist(): 計算比當前值還小的值的比例, 相當于計算 density;

ntile():把數據分成若干塊, 看每個數據在具體拿一個塊;

cumsum(), cummean(), cummin(), cummax(), cumany(), cumall():計算和 (sum), 均值 (mean), 最小值 (min), 最大值 (max), 任何為真 (any), 所有為真 (all);

na_if():把特定地值轉換為 NA;

coalesce(): 找出若干列中第一個不為 NA 的值;

if_else(): 向量化的 ifelse 函數的效果.

recode: 把一系列值轉換為其他值

case_when: 多條件選擇.

比如:

t111

t21

5 匯總: summarise()

summarise()函數以及衍生函數,包括summarise_all, summarise_at,summarise_if主要進行數據的統計描述。

一般情況下,它們需要同時調動以下等其它函數來共同完成。

min():返回最小值

max():返回最大值

mean():返回均值

sum():返回總和

sd():返回標準差

median():返回中位數

IQR():返回四分位極差

n():返回觀測個數

n_distinct():返回不同的觀測個數

first():返回第一個觀測

last():返回最后一個觀測

nth():返回n個觀測

#求DBP的均數和中位數

summarise(t1, DBP_mean = mean(DBP), DBP_median = median(DBP))

#求DBP和SBP的總個數、均數和標準差,需要調用summarise_at 函數,var()函數,funs() 函數

summarise_at(t1, vars(DBP, SBP), funs(n(), mean, median))

#求定量變量數據的均數和標準差,需要調用summarise_if 函數,var()函數,funs() 函數

summarise_if(t1, is.numeric, funs(n(),mean,median))

#存在著缺失值的時候,計算定均數和標準差,需要調用summarise_at 函數,var()函數,funs() 函數

summarise_at(t1, vars(DBP, SBP),

funs(n(), missing = sum(is.na(.)),

mean(., na.rm = TRUE),

median(.,na.rm = TRUE)))

6 分組: group_by()

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

group_by()的功能類似于SPSS拆分文件夾的功能,十分地好用。

tt1

tt2

或者直接將上述兩句整合成一句

tt3

tt3

7. 數據庫合并join()

在之前的內容中,我們介紹過用rbind,cbind,merge等函數進行數據庫合并,但利用join()函數,花樣更多。

left_join(t1,t2)

right_join(t1,t2)

inner_join(t1,t2,by=c(“”))

full_join(t1,t2, by = c("first", "last"))

semi_join(t1,t2, by = c("first", "last"))

anti_join(t1,t2, by = c("first", "last"))

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

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

8. dplyr 包其它重要函數

由于篇幅的關系,不再一一介紹dplyr 包的函數,這里可以介紹下,有興趣者可以進一步學習,比如dplyr 包的重命名rename(), 數據集重新再抽樣sample(),數據轉換transmute()都是是否有用的函數。

DAY14的內容就介紹到這里!

最后,一個月就能學會R語言,你敢挑戰一下嗎?

想挑戰的話,請加入R語言的交流群吧?(由于群規模限制,請先加入鄭老師微信號注明R語言即可)

關注公眾號,請點擊“閱讀原文”,即可獲得30天學會R語言的所有講義的百度網盤鏈接下載! (下載密碼請關注公眾號,發送“30天”即可)返回搜狐,查看更多

責任編輯:

總結

以上是生活随笔為你收集整理的r语言必学的十个包肖凯_30 天学会R DAY 14:R语言必学包dplyr的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。