一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

30 天學(xué)會(huì)R DAY 16:R語言數(shù)據(jù)整理大總結(jié)

 妙趣橫生統(tǒng)計(jì)學(xué) 2019-12-08

第16天 R語言數(shù)據(jù)清洗和整理總結(jié)

從7講(天)到15講(天),公眾號(hào)花了大量的時(shí)間告訴諸位,當(dāng)數(shù)據(jù)導(dǎo)入后,我們必須要進(jìn)行一系列的操作,以滿足統(tǒng)計(jì)分析的要求。為什么需要差不多9講的內(nèi)容進(jìn)行數(shù)據(jù)清洗和整理呢?實(shí)際上很多人忽略了統(tǒng)計(jì)分析之前的數(shù)據(jù)整理的重要性。我們拿到的數(shù)據(jù)往往是原始數(shù)據(jù),必須要借助相應(yīng)的方法發(fā)現(xiàn)數(shù)據(jù)的特征、找出數(shù)據(jù)的異常值和缺失值、計(jì)算產(chǎn)生新的定量數(shù)據(jù)、將定量數(shù)據(jù)轉(zhuǎn)換為分類數(shù)據(jù)、數(shù)據(jù)因子化、產(chǎn)生子集等多個(gè)操作。

以下是過去各講設(shè)計(jì)數(shù)據(jù)整理的內(nèi)容

第4天  介紹數(shù)據(jù)框時(shí),探討了數(shù)據(jù)庫常用的子集提取和數(shù)據(jù)整理方法

第5天  總結(jié)了數(shù)據(jù)集主要子集提取方法

第7天  介紹了數(shù)據(jù)集子集的提取方法

第8天  介紹了變量的增加和減少測(cè)量

第9 天  介紹了變量轉(zhuǎn)換的主要方法

第10天  初步介紹缺失值問題

第11 天 介紹if語句和循環(huán)語句在數(shù)據(jù)整理中的應(yīng)用

第13天  總結(jié)了apply族函數(shù)的數(shù)據(jù)整理和匯總功能

第14天  介紹數(shù)據(jù)清理的重要dplyr包

第15天  介紹數(shù)據(jù)整理的重要tidyr包

在利用R語言統(tǒng)計(jì)分析之前,建議諸位復(fù)習(xí)數(shù)據(jù)清洗和整理方法,打好基礎(chǔ)!今天,我著重對(duì)定量定性數(shù)據(jù)的轉(zhuǎn)換功能進(jìn)行總結(jié),并推出tidyverse系列包供大家了解。

1、 數(shù)值變量數(shù)據(jù)轉(zhuǎn)為分類變量數(shù)據(jù)

數(shù)值變量數(shù)據(jù)經(jīng)常要轉(zhuǎn)換為分類變量,由于本系列課程分類變量的轉(zhuǎn)換,分散在各處,今天進(jìn)行匯總。常見的方法如下:

# 先讀取數(shù)據(jù)集

t1<-read.csv("elder1.csv")

t2<-read.csv("elder2.csv")

#第一種方法,利用ifelse進(jìn)行簡(jiǎn)單轉(zhuǎn)換

t1$SBP1<-ifelse(t1$SBP>=140,1,0)

#第二種方法,最基本的多分類轉(zhuǎn)換方法

t1$income2[t1$income>=5]<-3

t1$income2[t1$income<5 &t1$income>=3 ]<-2

t1$income2[t1$income<3 ]<-1

# 第三種方法,利用within語句進(jìn)行

t1<- within(t1,{

 income3<-NA

 income3[income>=5]             <- 3

 income3[income<5 & income >=3]     <- 2

 income3[income < 3]                <-1})

#第四種方法,利用循環(huán)語句

for(i in 1:length(t1$income)){

 if(is.na(t1$income[i])){

   t1$income4[i]<-NA

 } else if(t1$income[i]<3){

   t1$income4[i]<-1

 } else if(t1$income[i]<5){

   t1$income4[i]<-2

 }else if(t1$income[i]>=5){

   t1$income4[i]<-3

 }

}

# 第五種方法,編一個(gè)函數(shù)來統(tǒng)籌數(shù)據(jù)轉(zhuǎn)換

f1<-function(x){

 for(i in 1:length(X)){

   if(is.na(x[i])){

     y[i]<-NA

   } else if(x[i]<3){

     y[i]<-1

   } else if(x[i]<5){

     y[i]<-2

   }else if(x[i]>=5){

     y[i]<-3

   }

 }

 return(y)

}

attach(t1)

t1$income10<-f1(income)

detach

二、分類變量數(shù)據(jù)因子化和轉(zhuǎn)換

數(shù)據(jù)庫中字符串往往自動(dòng)默認(rèn)設(shè)置為因子(factor),但是數(shù)值型一般默認(rèn)為numeric。然后,我們數(shù)據(jù)庫構(gòu)建時(shí),分類數(shù)據(jù)也會(huì)采用數(shù)值1、2、3來表達(dá)。這個(gè)時(shí)候,往往需要采用一定的方法進(jìn)行因子化處理。

常見的方法factor或者as.factor

> is.numeric(t2$sex)

[1] TRUE

> is.factor(t2$sex)

[1] FALSE

> t2$sex<-factor(t2$sex)

> is.factor(t2$sex)

[1] TRUE

我們也可以利用apply族函數(shù)來進(jìn)行因子批量化操作

vars<-c("sex","marriage","education","huji","income","smoking")

t2[vars] <- lapply(t2[vars], factor)

分類數(shù)據(jù)如何進(jìn)行轉(zhuǎn)換呢?比如三分類轉(zhuǎn)為二分類,多分類變成二分類。分類數(shù)據(jù)除了我們第一點(diǎn)“數(shù)值變量數(shù)據(jù)轉(zhuǎn)為分類變量數(shù)據(jù)”介紹的5種方法之外,還有以下的方法:

#利用dplyr包的mutate語句,可以對(duì)factor進(jìn)行操作,數(shù)值結(jié)果不形成因子

library(dplyr)

table(t1$income)

t1$income<-factor(t1$income)

t1<-mutate(t1,income5=recode(income,"1"=1,"2"=1,"3"=2))

t1<-mutate(t1,income6=recode(income,"1"=1,"2"=0))

t1<-mutate(t1,income7=recode(income,"1"=1,"2"=0,.default =3) )    

is.factor(t1$income7)

#利用dplyr的recode_factor語句,可以對(duì)factor進(jìn)行操作,直接形成因子

s1$income8=recode_factor(t1$income,"1"=1,"2"=2)

s1$income9=recode_factor(t1$income,"1"=1,"2"=2,"3"=2)

table(t1$income)

table(t1$income9)

is.factor(t1$income9)

另外,如果有興趣者可以學(xué)習(xí)forcats來開展因子的處理,這里不再鋪開來講。

三、tidyverse系列包,數(shù)據(jù)整理當(dāng)紅辣子雞。

Tidyverse是一組R語言包的集合,看起來似乎我們課程沒有介紹過它,但是實(shí)際上我們已經(jīng)接觸過它了,學(xué)過它的兩個(gè)包dplyr和tidyr。兩個(gè)包功能非常強(qiáng)大,給我們留下了深刻印象,但tidyverse不僅包括上述兩個(gè)包,它還有更多的包。它集合了當(dāng)下最為流行的數(shù)據(jù)處理包,是簡(jiǎn)化數(shù)據(jù)操縱、便利統(tǒng)計(jì)操作、美化結(jié)果呈現(xiàn)的高效工具。

有人說,tidyverse系列包,讓R語言換發(fā)了新的青春!

1. 基本理念

tidyverse是由RStudio首席科學(xué)家Hadley Wickham開發(fā)的R套裝的集。整潔數(shù)據(jù)是Hadley 等人極力提倡的一個(gè)數(shù)據(jù)處理理念。若要執(zhí)行統(tǒng)計(jì)計(jì)算,統(tǒng)計(jì)軟件對(duì)數(shù)據(jù)格式有一定要求。但通常外部導(dǎo)入的數(shù)據(jù)并不一定能達(dá)到軟件處理的要求,而需要進(jìn)行一定的預(yù)處理,此過程通常也稱為數(shù)據(jù)清洗(data cleaning)。實(shí)際上,這種前期處理的工作往往占據(jù)比狹義的統(tǒng)計(jì)分析更多的時(shí)間。為此,需要將無序數(shù)據(jù)(messy data)整理成可供計(jì)算機(jī)程序識(shí)別與處理的、具備特定格式的數(shù)據(jù),即整潔數(shù)據(jù),其基本特征有三:

1.每列為一個(gè)變量(Each variable is in a column);

2.每行為一個(gè)觀測(cè)(Each observation is in a row);

3.每個(gè)單元格為一個(gè)取值(Each value is a cell)。

這些特征在后面的例子中會(huì)逐一呈現(xiàn),這里暫不展開。分析者獲得的數(shù)據(jù)有些本身就適宜軟件分析,但很多時(shí)候并非如此。使用tidyverse 包,可高效地將無序數(shù)據(jù)轉(zhuǎn)為整潔數(shù)據(jù),以便軟件分析。

2.安裝與加載

安裝tidyverse 包,即可一次性安裝多個(gè)系列包。

最常用數(shù)據(jù)分析包:

· ggplot2,用于數(shù)據(jù)可視化

· dplyr,用于數(shù)據(jù)操縱

· tidyr,用于數(shù)據(jù)整潔

· readr,用于讀入R 格式數(shù)據(jù)

· purrr,用于編程

· tibble,用于形成便于數(shù)據(jù)處理的數(shù)據(jù)框

數(shù)據(jù)操縱類:

· stringr,用于處理字符串?dāng)?shù)據(jù)

· lubridate, 用于處理日期和時(shí)間數(shù)據(jù)

· forcats,用于處理因子數(shù)據(jù)

數(shù)據(jù)導(dǎo)入類:

· DBI,用于聯(lián)接數(shù)據(jù)庫

· haven,用于讀入SPSS、SAS、Stata 數(shù)據(jù)

· httr,用于聯(lián)接網(wǎng)頁API

· jsonlite,用于讀入JSON 數(shù)據(jù)

· readxl,用于讀入Excel 文檔

· rvest,用于網(wǎng)絡(luò)爬蟲

· xml2,用于讀入xml 數(shù)據(jù)

數(shù)據(jù)建模類:

· modelr,用于使用管道函數(shù)建模

· broom,用于統(tǒng)計(jì)模型結(jié)果的整潔

3.基于tidyverse包的數(shù)據(jù)整理和加工系統(tǒng)性思維

Hadley 等重新定義了R語言,在他們看來R語言整個(gè)流程過于復(fù)雜,因此他們?cè)趶臄?shù)據(jù)import 到整理、清晰、可視化、建模等多方面都需要得到改善,因此提出清潔R語言的概念。以下兩張圖說明tidyverse包在數(shù)據(jù)分析中各個(gè)環(huán)節(jié)中,各包發(fā)揮的作用??梢哉f,我們基于tidyverse 所有的包,就可以完成數(shù)據(jù)前期整理和清晰的過程,并且可以方便我們更好的構(gòu)建容易表達(dá)的統(tǒng)計(jì)模型。

可以看出,tidyverse系列能夠在數(shù)據(jù)整個(gè)過程中,不僅是數(shù)據(jù)整理,在數(shù)據(jù)導(dǎo)入、可視化、建模、結(jié)果表達(dá)都能夠?qū)崿F(xiàn)對(duì)R編程的重構(gòu),簡(jiǎn)化代碼,降低學(xué)習(xí)和使用R語言的難度。

如果你想深入學(xué)習(xí)R語言,那么基于tidyverse系統(tǒng)學(xué)習(xí)R語言是最好的途徑!關(guān)于tidyverse也有一本專門的書《R for data science》,已經(jīng)有相應(yīng)的中文版,這應(yīng)該是學(xué)習(xí)tidyverse的一本圣經(jīng)。

最后,一個(gè)月就能學(xué)會(huì)R語言,你敢挑戰(zhàn)一下嗎?

想挑戰(zhàn)的話,請(qǐng)加入R語言的交流群吧?(由于群規(guī)模限制,請(qǐng)先加入鄭老師微信號(hào):掃描以下二維碼,并注明R語言)

    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多

    欧美一区二区在线日韩| 国产视频福利一区二区| 色婷婷国产精品视频一区二区保健| 欧美做爰猛烈叫床大尺度| 欧美乱视频一区二区三区| 婷婷开心五月亚洲综合| 国产精品偷拍视频一区| 久久福利视频视频一区二区 | 午夜小视频成人免费看| 国产美女精品人人做人人爽| 精品少妇人妻av一区二区蜜桃 | 久久99亚洲小姐精品综合| 丝袜视频日本成人午夜视频| 国产一区麻豆水好多高潮| 欧美午夜色视频国产精品| 字幕日本欧美一区二区| 99热在线播放免费观看| 国产精品免费福利在线| 日韩在线视频精品视频| 东北老熟妇全程露脸被内射| 日韩高清毛片免费观看| 亚洲超碰成人天堂涩涩| 日韩精品一区二区毛片| 人妻精品一区二区三区视频免精| 我要看日本黄色小视频| 初尝人妻少妇中文字幕在线| 欧美黄色黑人一区二区| 午夜福利在线观看免费| 美国欧洲日本韩国二本道| 日本福利写真在线观看| 国产主播精品福利午夜二区| 老鸭窝精彩从这里蔓延| 国产女性精品一区二区三区| 国产精品视频久久一区| 国产精品一区二区高潮| 中文字幕有码视频熟女| 最近日韩在线免费黄片| 色婷婷人妻av毛片一区二区三区| 亚洲精品中文字幕在线视频| 日韩精品毛片视频免费看| 欧美一级日韩中文字幕|