如何在R中将含逗号分隔符的字符型列转换为数值型?
问题根因
你的价格数据使用,作为小数分隔符,而R默认的数值识别规则是用.作为小数分隔符,因此直接调用as.numeric()无法识别该格式,会统一返回NA。
解决方案
方案1:读取数据时直接适配格式
在调用read.zoo()时增加dec = ","参数,指定小数分隔符为逗号,读取后自动转换为数值型,无需后续二次处理:
VDAXcsv <- read.zoo("你的文件路径", dec = ",", stringsAsFactors = FALSE)
方案2:已读取数据手动转换
如果已经读取完数据,先把字符中的逗号替换为点,再转数值即可:
- 单独转换某一列:
VDAXcsv$Dernier <- as.numeric(sub(",", ".", VDAXcsv$Dernier, fixed = TRUE))
- 批量转换整个数据框的所有字符列:
VDAXcsv[] <- lapply(VDAXcsv, function(col) { if (is.character(col)) { return(as.numeric(sub(",", ".", col, fixed = TRUE))) } return(col) })
fixed = TRUE表示直接匹配逗号字符,不需要触发正则匹配规则,执行效率更高且避免特殊符号匹配异常。
内容的提问来源于stack exchange,提问作者ThomasFR
相关产品推荐
相关产品推荐

