Tạo bảng ví dụ:
#Tạo cột ngày
date<-seq(as.Date("2023-01-01"), as.Date("2023-11-09"), by="days")
#Tạo cột doanh thu
set.seed(123)
revenue<-runif(length(date), min = 1000, max = 2000)
revenue <- round(revenue, digits = 2)
df<-data.frame(date, revenue)
#Tạo cột Tên và Loại sản phẩm
type<-c('A', 'B', 'C')
name<-c('X', 'Y', 'Z')
df$type<-sample(type, size = nrow(df), replace = TRUE)
df$name<-sample(name, size = nrow(df), replace = TRUE)
df<-df %>%
select(name, date, type, revenue)Cách I: Dùng gsub
df$name<-ifelse(df$type %in% c('A', 'B') & df$revenue > 1200 & month(df$date) > 2,
gsub('X', 'NN', df$name), df$name)Cách II: Gán biến
Cách III: Dùng mutate
df <- df %>%
select(name, date, type, revenue) %>%
mutate(name = ifelse(name == "X" & type %in% c('A', 'B') & revenue > 1200 & month(date) > 2,
"NN", name))Kết quả khi thỏa mãn điều kiện name là X sẽ đổi thành NN, kiểm tra ở bảng dưới: