Cleaning data

Tách và nhập cột với 2 trường data khác nhau trong cùng 1 col

patient <-c("X", "Y","X", "Y","X", "Y")
treat <- c("A","A","B","B","C","C")
year_mo <-rep("2010-10","2012-10",3)
res <- c(2:7)
treatment <- cbind(patient,treat,year_mo,res)
class(treatment)
## [1] "matrix"
tre <- as.data.frame(treatment)
library(tidyverse)
## -- Attaching packages ---------------------------------------------------------------------------------------------- tidyverse 1.2.1 --
## v ggplot2 3.1.1       v purrr   0.3.2  
## v tibble  2.1.1       v dplyr   0.8.0.1
## v tidyr   0.8.3       v stringr 1.4.0  
## v readr   1.3.1       v forcats 0.4.0
## -- Conflicts ------------------------------------------------------------------------------------------------- tidyverse_conflicts() --
## x dplyr::filter() masks stats::filter()
## x dplyr::lag()    masks stats::lag()
tre
##   patient treat year_mo res
## 1       X     A 2010-10   2
## 2       Y     A 2010-10   3
## 3       X     B 2010-10   4
## 4       Y     B 2010-10   5
## 5       X     C 2010-10   6
## 6       Y     C 2010-10   7
separate(tre, year_mo,c("year","month")) # tach nam va thang ra 2 col rieng
##   patient treat year month res
## 1       X     A 2010    10   2
## 2       Y     A 2010    10   3
## 3       X     B 2010    10   4
## 4       Y     B 2010    10   5
## 5       X     C 2010    10   6
## 6       Y     C 2010    10   7
tre
##   patient treat year_mo res
## 1       X     A 2010-10   2
## 2       Y     A 2010-10   3
## 3       X     B 2010-10   4
## 4       Y     B 2010-10   5
## 5       X     C 2010-10   6
## 6       Y     C 2010-10   7
unite(tre,year_mo)# nhap nam va thang vao chung 1 col
##         year_mo
## 1 X_A_2010-10_2
## 2 Y_A_2010-10_3
## 3 X_B_2010-10_4
## 4 Y_B_2010-10_5
## 5 X_C_2010-10_6
## 6 Y_C_2010-10_7
tre
##   patient treat year_mo res
## 1       X     A 2010-10   2
## 2       Y     A 2010-10   3
## 3       X     B 2010-10   4
## 4       Y     B 2010-10   5
## 5       X     C 2010-10   6
## 6       Y     C 2010-10   7

Gather chuyển từ dòng wide về cột long

View the head of census

head(census) ## Gather the month columns census2 <- gather(census, month, amount, -YEAR)

Arrange rows by YEAR using dplyr’s arrange

census2_arr <- arrange(census2, YEAR)

View first 20 rows of census2

head(census2_arr, 20)

Gather chuyển từ cột nhiều type về nhiều cột theo từng type khác nhau

##View first 50 rows of census_long head(census_long,50)

Spread the type column

census_long2 <- spread(census_long,type,amount)

View first 20 rows of census_long2

head(census_long2)

TYPES OF STRING

library(stringr) str_trim() # xoa cac khoang trang " fdfsfsf " str_trim(“Khoa hoc R”) str_pad() # them ki tu hoac so vao chuoi str_pad(c(“23485W”, “8823453Q”, “994Z”), width = 9, side = “left”, pad = “0”) str_detect() # tim toi thang pattern mong muon # Detect all dates of birth (dob) in 1997 str_detect(students3$dob, “1997”) str_replace() # find and replace the pattern tolower() # lam cho chu ve chu thuong tolower(“HE HE HA HA”) toupper() # lam cho chu in hoa toupper(“hihi”)

MISSING VALUE AND SPECIAL VALUE

FIND THE MISSING VALUE

df <-data.frame(A=c(2,3,4,NA),
                B=c(3,NA,4,4))
df
##    A  B
## 1  2  3
## 2  3 NA
## 3  4  4
## 4 NA  4
is.na(df)
##          A     B
## [1,] FALSE FALSE
## [2,] FALSE  TRUE
## [3,] FALSE FALSE
## [4,]  TRUE FALSE
any(is.na(df)) # xem co missing trong df hay khong
## [1] TRUE
sum(is.na(df)) # dem so missing
## [1] 2
summary(df)
##        A             B        
##  Min.   :2.0   Min.   :3.000  
##  1st Qu.:2.5   1st Qu.:3.500  
##  Median :3.0   Median :4.000  
##  Mean   :3.0   Mean   :3.667  
##  3rd Qu.:3.5   3rd Qu.:4.000  
##  Max.   :4.0   Max.   :4.000  
##  NA's   :1     NA's   :1
df2 <- na.omit(df) # xoa cac gia tri missing trong data moi
df2
##   A B
## 1 2 3
## 3 4 4