肺結核病人數據清洗|R語言案例
本文是翻譯:用R語言進行數據清洗文章文末肺結核病人數據案例的實踐過程
運用R中tidyr包里的數據集【who】,數據集包含結核病(TB)的情況下從年份,國家,年齡,性別和診斷方法進行細分。
清洗前:
清洗後:
過程詳解:
原始數據預覽
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
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
5.將一列分為多列
who3 <- who2 %>% n separate(key, c("new", "type", "sexage"), sep = "_")nwho3n
6.刪除「iso2」「iso3」「new」這三列
who4 <- subset(who3,select=-c(new, iso2, iso3))nwho4n
也可以用下面這個辦法
library(dplyr)nwho4 <- who3 %>% n select(-new, -iso2, -iso3)n
7.將一列分為多列
who5 <- who4 %>% n separate(sexage, c("sex", "age"), sep = 1)nwho5n
總結總結:
- %>%我理解為,保留以前的函數到新的領域用,比如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
推薦閱讀: