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的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: vs2019使用python进行数据可视
- 下一篇: console 立即输出 调试_Java