【发布时间】:2020-08-18 03:10:15
【问题描述】:
所以我有一个包含数千个变量的数据表。数据不是很干净,所以我运行以下代码从我的dt 中删除所有- 和- 系列。
dt <- as.data.table(lapply(dt, function(x) {
gsub("-+", "", x)
}))
但是,此代码将所有列转换为 character 向量。如果可能的话,我想将所有变量重新格式化为它们原来的 class 以及 class character 的任何变量为数字(所以在变量是数字但至少有一个观察值的情况下,@ 987654329@ 某处,例如123-。
这可以通过fwrite() 然后fread() 来完成,但我想避免只为了将其重新导入到同一个会话而编写一个临时文件,因为这会占用存储空间和时间。
示例:
假设你有以下数据:
library(data.table)
dt <- data.table(nums = 11:20,
char_nums = c(as.character(1:9), "10-"),
letters = letters[1:10])
# nums is of class integer, char_nums is of class character
str(dt)
目标是删除-的所有系列并让nums和char_nums属于classinteger,同时保留classcharacter属于letters。
【问题讨论】:
标签: r string data.table format numeric