【发布时间】:2020-03-07 14:03:48
【问题描述】:
我正在寻找data.table 中plyr::mapvalues 的可读替代方案。
例如,在plyr::mapvalues 中,如果我想将mtcars 中的carb 的值更改为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[...])?
【问题讨论】:
-
我不确定我是否理解这个问题。
plyr::mapvalues在data.table中的工作方式也相同。dt[, carb2 := plyr::mapvalues( carb, from = c("1", "2", "3", "4", "6", "8"), to = c("type1", "type1", "type2", "type2", "type3", "type3"))]您需要学习替代品吗? -
@RonakShah 也许我应该在我的问题中澄清它。我对data.table有点了解,所以我想留在
data.table环境中。但是,我没有想过像这样在data.table中使用plyr::mapvalues,仅在使用管道时。我想知道它如何在性能方面发挥作用。
标签: r dataframe dplyr data.table plyr