R语言如何将数据框engine_volume列的字符串值转换为整数
R实现带单位字符串列转整数类型
你创建的cars数据框测试代码如下:
cars <- data.frame(engine_volume = c('1598 ccm','1605 ccm','1900 ccm','1598 ccm','1605 ccm','1900 ccm', '1598 ccm','1605 ccm','1900 ccm', '1598 ccm'))
engine_volume列的字符串统一带ccm单位后缀,要转成整数类型可以按以下两种方法操作:
- 基础R方法(无需安装加载第三方包)
用正则替换掉所有非数字字符,再强制转整数类型即可,代码直接运行就行:
运行后可以执行cars$engine_volume <- as.integer(gsub(pattern = "\\D", replacement = "", x = cars$engine_volume))str(cars)查看列类型,能看到engine_volume已经从字符型(chr)变为整数型(int),值就是提取出来的排量数字。 - readr包方法(适合数据格式不规整的场景)
如果日常用tidyverse工作流,或者数据里单位和数字之间的空格不统一、有其他混杂字符,可以用parse_number函数自动提取数字,容错性更高:# 首次使用先运行安装命令:install.packages("readr") library(readr) cars$engine_volume <- as.integer(parse_number(cars$engine_volume))
避坑提示:不要直接用
as.integer()强转带单位的字符串,会返回NA值,必须先把非数字的单位部分清除再做类型转换。
内容的提问来源于stack exchange,提问作者Sofie Zippay
相关产品推荐
相关产品推荐

