Thay thế cho toàn bộ dataframe

Ví dụ trong trường hợp ở data.frame sau. Ta muốn thay thế toàn bộ dấu “<” bởi dấu “>”.

data <- data.frame(name = rep(letters[1:10]), var1 = rep('< 2', 10), var2 = rep('< 3', 10))
head(data)
##   name var1 var2
## 1    a  < 2  < 3
## 2    b  < 2  < 3
## 3    c  < 2  < 3
## 4    d  < 2  < 3
## 5    e  < 2  < 3
## 6    f  < 2  < 3

Ta sử dụng các cách sau:

Cách 1:

data.frame(lapply(data, function(x) {gsub("< ", ">", x)}))
##    name var1 var2
## 1     a   >2   >3
## 2     b   >2   >3
## 3     c   >2   >3
## 4     d   >2   >3
## 5     e   >2   >3
## 6     f   >2   >3
## 7     g   >2   >3
## 8     h   >2   >3
## 9     i   >2   >3
## 10    j   >2   >3

Cách 2

data2 <- data
data2[] <- lapply(data, gsub, pattern = "< ", replacement = ">", fixed = TRUE)
data2
##    name var1 var2
## 1     a   >2   >3
## 2     b   >2   >3
## 3     c   >2   >3
## 4     d   >2   >3
## 5     e   >2   >3
## 6     f   >2   >3
## 7     g   >2   >3
## 8     h   >2   >3
## 9     i   >2   >3
## 10    j   >2   >3

Cách 3

library(dplyr)
library(stringr)

Censor_consistently <-  function(x){
  str_replace(x, '< ', '>')
}

mutate_all(data, funs(Censor_consistently))
##    name var1 var2
## 1     a   >2   >3
## 2     b   >2   >3
## 3     c   >2   >3
## 4     d   >2   >3
## 5     e   >2   >3
## 6     f   >2   >3
## 7     g   >2   >3
## 8     h   >2   >3
## 9     i   >2   >3
## 10    j   >2   >3