Build df:
df <- data.frame(room_type = as.character(c("Entire home/apt", "Private room", "Shared room")), stringsAsFactors = F)
Base R один вкладыш, принимая только два уникальных значения для df $ room_type_new:
df$room_type_new <- ifelse(grepl("Entire home/apt", df$room_type), "Entire home", "Shared home")
Base R один вкладыш, если> 2 уникальных значения для df $room_type_new, вложите ifelse:
df$room_type_new <- ifelse(grepl("Entire home/apt", df$room_type), "Entire home", ifelse(grepl("Private room|Shared room", df$room_type), "Shared home", "")
Также причина, по которой ваши выходные данные передаются чему-либо, заключается в том, что вы не присваиваете результат объекту - используя свой код:
data1 <-
data1%>%
mutate(room_type_new = case_when(.$room_type %in% c("Entire home/apt") ~ "Entire home",.$room_type %in% c("Private room", "Shared room") ~ "Shared home")