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

如何用dplyr将数据框中以_id结尾的列转为数值型?

使用dplyr将以_id结尾的因子列转换为数值型

没问题,这在dplyr里可以很优雅地实现,我给你两种实用的方法,你可以根据自己的需求和dplyr版本选择:

方法1:使用across()(推荐,dplyr 1.0.0+)

across()是dplyr 1.0.0版本推出的新函数,专门用来批量处理列,搭配ends_with()可以精准匹配所有以_id结尾的列。

这里要提个关键注意点:直接对因子使用as.numeric()会返回因子的水平索引值,而不是因子本身的数值内容,这通常不是我们想要的结果。所以稳妥的做法是先把因子转成字符,再转成数值。

示例代码如下:

library(dplyr)

# 假设你的数据框名为df
df <- df %>%
  mutate(across(ends_with("_id"), ~ as.numeric(as.character(.x))))

方法2:使用mutate_at()(兼容旧版dplyr)

如果你使用的是dplyr 1.0.0之前的版本,可以用mutate_at()来实现同样的功能,逻辑和上面一致:

df <- df %>%
  mutate_at(vars(ends_with("_id")), ~ as.numeric(as.character(.x)))

额外注意事项

  • 在转换前,建议先检查这些_id列的因子水平,确认没有非数值的异常值(比如字符型乱码、无意义字符串等),否则转换后会生成NA。你可以用count(df, food_id)(替换成具体列名)来查看某列的取值分布。
  • 如果你的_id因子列的水平带前缀(比如"FOOD_1"),直接转换会得到NA,这种情况你可能需要先提取数值部分再做转换。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 03:58:47