You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

R语言data.table操作:如何删除数值型state列每个值的最后两位

解决方案

针对数值型的FIPS编码列,有两种常用的处理思路,都可以实现删除最后两位的需求:

方法1:整数除法(推荐,性能更高)

直接对数值列做整数除法,除以100后自动舍去小数部分,刚好得到去掉最后两位的结果,适合所有4位FIPS编码的处理场景:

# 基础R写法
df$state <- df$state %/% 100

# dplyr写法
library(dplyr)
df <- df %>% mutate(state = state %/% 100)

# data.table写法(你的示例数据为data.table格式)
library(data.table)
setDT(df)
df[, state := state %/% 100]

方法2:类型转换后使用字符串截取

如果你更熟悉字符串处理的逻辑,可以先把数值列转成字符型,截取除最后两位外的部分后再转回数值即可:

# 基础R写法
df$state <- as.integer(substr(as.character(df$state), 1, nchar(as.character(df$state)) - 2))

# dplyr + stringr写法
library(dplyr)
library(stringr)
df <- df %>% mutate(state = as.integer(str_sub(as.character(state), 1, -3)))

两种方法处理后得到的state列都是数值型,可直接匹配其他数据集的对应字段。

内容的提问来源于stack exchange,提问作者AaronSzcz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 14:24:07