重新分类数据表中的选择列

标签 r data.table

我希望使用矢量化操作更改数据表中选定变量的类别。我是 data.table 语法的新手,并且正在尝试尽可能多地学习。我现在的问题很基础,但它会帮助我更好地理解数据表的思维方式!

有人问了类似的问题 here !但是,该解决方案似乎与仅重新分类一列或所有列有关。我的问题对于选定的几列是独一无二的。

### Load package
require(data.table)

### Create pseudo data
data <- data.table(id     = 1:10,
                   height = rnorm(10, mean = 182, sd = 20),
                   weight = rnorm(10, mean = 160, sd = 10),
                   color  = rep(c('blue', 'gold'), times = 5))

### Reclass all columns
data <- data[, lapply(.SD, as.character)]

### Search for columns to be reclassed
index <- grep('(id)|(height)|(weight)', names(data))

### data frame method
df <- data.frame(data)
df[, index] <- lapply(df[, index], as.numeric)

### Failed attempt to reclass columns used the data.table method
data <- data[, lapply(index, as.character), with = F]

任何帮助,将不胜感激。我的数据很大,因此需要使用正则表达式来创建要重新分类的列号向量。

感谢您的时间。

最佳答案

您可以避免构建 .SD 的开销。内j通过使用 set

for(j in index) set(data, j =j ,value = as.character(data[[j]]))

关于重新分类数据表中的选择列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16225159/

相关文章:

r - 如何连续按几列对data.table进行分组

r - 如何操作data.table中的data.frame

r - 为什么 R.predict.svm 返回错误大小的列表?

R - 找出包含行最大值的列是否与另一列绑定(bind)

c++ - Rcpp: 'operator=' 矩阵和列表的模糊重载

r - 在R中的另一列下方插入多列

r - 在 R 中使用 glm(..) 获得 95% 的置信区间

r - 不要在 data.table 中使用 by=2 col 删除空级别

r - 使用 dplyr 或 data.table 中的动态列名更改数据

r - 在数据表的两列之间使用 %like% 进行过滤