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

如何用dplyr将R中以w33、w35开头的字符列转为数值列?

正确实现方式

你的代码问题在于范围选得不对——它会把**所有字符列(除了names)**都转成数值型,但你实际只需要处理以w33、w35开头的列。用dplyr的列名选择器精准匹配目标列即可:

方法1:用starts_with匹配开头(推荐)

starts_with可以直接接受多个前缀,精准筛选列名以w33或w35开头的列:

library(dplyr)

# 替换成你的数据集名称,比如df
df <- df %>%
  mutate(across(starts_with(c("w33", "w35")), as.numeric))

方法2:用正则表达式匹配(更灵活)

如果需要更精确的匹配规则,比如确保是w33/w35后跟数字,可以用matches结合正则表达式:

df <- df %>%
  mutate(across(matches("^w3[35]"), as.numeric))

这里^w3[35]的意思是:列名以w3开头,第三个字符是3或5,完全符合你提到的w33xxxx、w35xxxx格式。

补充说明

如果这些目标列里存在非数字的字符(虽然你说只有数字或NA),as.numeric会把它们转为NA。如果需要更容错的转换,可以用readr::parse_number,它会自动提取字符串中的数字部分:

library(readr)

df <- df %>%
  mutate(across(starts_with(c("w33", "w35")), parse_number))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 13:26:02