Я ищу удобочитаемую альтернативу plyr::mapvalues
в data.table
.
Например, в plyr::mapvalues
, если я хочу изменить значения carb
в mtcars
наtype1, type2, type3
, я бы сделал что-то вроде этого:
library(tidyverse)
mtcars %>%
mutate(carb = plyr::mapvalues(
carb,
from = c("1", "2", "3", "4", "6", "8"),
to = c("type1", "type1", "type2", "type2", "type3", "type3")))
Чтобы получить то же самое в data.table
, я бы сделал это так, что не похоже на обычный метод:
library(data.table)
dt <- data.table(mtcars)
dt$carb <- as.character(dt$carb)
dt[which(carb %in% c("1", "2")),
carb := "type1"]
dt[which(carb %in% c("3", "4")),
carb := "type2"]
dt[which(carb %in% c("6", "8")),
carb := "type3"]
Можно ли изменить все значения в одном условии (dt[...]
)?