肺結核病人數據清洗|R語言案例

本文是翻譯:用R語言進行數據清洗文章文末肺結核病人數據案例的實踐過程

運用R中tidyr包里的數據集【who】,數據集包含結核病(TB)的情況下從年份,國家,年齡,性別和診斷方法進行細分。

清洗前:

原始數據who

清洗後:

最終整理好的數據

過程詳解:

原始數據預覽

1.安裝必要的包(可以只先安裝第一個,後面你沒安裝系統會提示你安裝)

install.packages("tidyr")ninstall.packages("magrittr")ninstall.packages("dplyr")ninstall.packages("magrittr")n

2.導入tidyr包中的who數據集,也就是2014年肺結核病人數據,並將診斷方法全部歸為兩列,名為key和case

data(who,package=tidyr) #導入數據nwho #查看數據nlibrary(magrittr) #為了運行後面管道函數%>%需要導入這個nlibrary(tidyr) #為了運行下面的gather函數nwho1 <- who %>% n gather(new_sp_m014:newrel_f65, key = "key", value = "cases", na.rm = TRUE)nwho1n

who1工作表

3.查看who1工作表key列的計數

library(plyr) #沒啟動這個你就不能用count了ncount(who1$key)n

4.在key列中替換字元「newrel」與「new_rel」。這使得所有的變數名稱一致。形成新工作表who2

who2 <- who1 %>% n mutate(key = stringr::str_replace(key, "newrel", "new_rel"))nwho2n

who2工作表

5.將一列分為多列

who3 <- who2 %>% n separate(key, c("new", "type", "sexage"), sep = "_")nwho3n

who3工作表

6.刪除「iso2」「iso3」「new」這三列

who4 <- subset(who3,select=-c(new, iso2, iso3))nwho4n

也可以用下面這個辦法

library(dplyr)nwho4 <- who3 %>% n select(-new, -iso2, -iso3)n

who4工作表

7.將一列分為多列

who5 <- who4 %>% n separate(sexage, c("sex", "age"), sep = 1)nwho5n

who5工作表

總結總結:

  1. %>%我理解為,保留以前的函數到新的領域用,比如who1到who5,每次用%>%傳遞都會生成新的工作表

2.這篇文章主要學習,如何將表格某列切成許多列,行變列,列變行,缺失值處理

完整代碼

#讀取tidyr包中的who數據ndata(who,package=tidyr)nwhon#將中間部分整合在一起nlibrary(magrittr)nlibrary(tidyr)nwho1 <- who %>% n gather(new_sp_m014:newrel_f65, key = "key", value = "cases", na.rm = TRUE)nwho1nnnlibrary(plyr)ncount(who1$key)nn#library(tidyr)nwho2 <- who1 %>% n mutate(key = stringr::str_replace(key, "newrel", "new_rel"))nwho2nnwho3 <- who2 %>% n separate(key, c("new", "type", "sexage"), sep = "_")nwho3nncount(who3$new)nnwho3nnnwho4 <- subset(who3,select=-c(new, iso2, iso3))nwho4nnnwho5 <- who4 %>% n separate(sexage, c("sex", "age"), sep = 1)nwho5n

推薦閱讀:

TAG:R编程语言 | 数据分析 |