如何从data.table中选取指定字符列与所有数值列?
用data.table选取指定字符列+所有数值列的解决方案
核心思路
先识别数据中所有数值类型的列,再将指定的emp_name列与这些数值列合并,最后通过data.table的列选取语法或.SDcols实现筛选。
具体实现代码
library(data.table) # 示例数据 emp.data <- data.table( emp_id = c (1:5), emp_name = c("Rick","Dan","Michelle","Ryan","Gary"), salary = c(623.3,515.2,611.0,729.0,843.25), start_date = as.Date(c("2012-01-01", "2013-09-23", "2014-11-15", "2014-05-11", "2015-03-27")), stringsAsFactors = FALSE ) # 筛选所有数值列的列名 numeric_cols <- names(emp.data)[sapply(emp.data, is.numeric)] # 组合目标列(指定列+数值列) target_columns <- c("emp_name", numeric_cols) # 方式一:直接用列名选取(简洁高效) result <- emp.data[, ..target_columns] # 方式二:使用.SDcols实现 result_with_sd <- emp.data[, .SD, .SDcols = target_columns]
效果验证
运行后会得到包含emp_name、emp_id、salary的数据集,自动排除非数值类型的start_date列,完全符合需求。
内容的提问来源于stack exchange,提问作者Arda Askin
相关产品推荐
相关产品推荐

