Это также может быть решено с использованием case_when
из dplyr, который, как мне кажется, немного точнее, и также обобщает случаи, когда существует более двух результатов (то есть, если, еще, если, и еще, вместо простоif и else).
library(tidyverse)
df <- df %>%
mutate(
device_type = as.character(device_type),
new_device = case_when(
wurfl_model_name %in% c("Nexus 5", "Nexus 7", "Nexus 6P", "Nexus 6", "Nexus 5X", "Nexus", "Nexus 4") ~ "android phone",
TRUE ~ device_type
)
)
В case_when
каждая строка в основном является оператором if.Если условие первого ряда выполнено, сделайте это.В противном случае, если выполняется условие второго ряда, сделайте это.TRUE
в последней строке является вашим else, потому что оно всегда оценивается как true, и, таким образом, если будет достигнута последняя строка case_when
, эта строка будет выполнена.Полную документацию по case_when
можно найти здесь, на сайте dplyr .