【问题标题】:Replacing character strings (values) in a column in R with integers in an efficient (vectorized) way以有效(矢量化)的方式用整数替换 R 中的列中的字符串(值)
【发布时间】:2019-01-17 20:52:50
【问题描述】:

我有一个大数据框,我想用整数替换字符串中的值。此列中有超过一千个唯一字符串。一种方法是通过 for 循环。这是带有玩具数据集的代码:

data(mtcars)
library(stringr)
mtcars$gear = as.character(mtcars$gear)
unique_values = unique(mtcars$gear)

for (i in (1:length(unique_values))){

   mtcars$gear =  str_replace(string = mtcars$gear, pattern = unique_values[i], replacement = as.character(i))

}

有没有更有效的方法?

【问题讨论】:

  • 您需要match(mtcars$gear, unique(mtcars$gear)) 吗?
  • as.integer(factor(mtcars$gear))?您可以使用 labels 内因子以您想要的方式更改它
  • 使用唯一值作为级别和整数作为标签的转换为因子的解决方案被证明非常有效、快速和优雅。谢谢。

标签: r dataframe replace vectorization


【解决方案1】:

使用dplyr 库应该可以解决问题:

data(mtcars)
library(stringr)
library(dplyr)


mtcars$gear = as.character(mtcars$gear)

mutate(mtcars, gear = as.integer(gear))

【讨论】:

    猜你喜欢
    • 2014-07-06
    • 2021-01-09
    • 2014-11-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-11
    • 2015-12-21
    • 2019-08-29
    相关资源
    最近更新 更多