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

如何将R数据框中除Steve和Adam列外的列转为数值型?

问题描述

我有如下结构的DataFrame:

Steve  2005   2006  2007  2008  2009  2010  Adam
134     24     42    45    56    43    32    54
# 另有50行数据

希望将所有列转换为数值型,但Steve和Adam列保持字符型不变。我尝试了以下代码,但它会把所有列都转为数值型:

df %>% mutate_if(is.character,as.numeric)
解决方案

可以通过指定排除列的方式,只对目标列执行数值转换:

  1. 使用mutate_at(适用于旧版dplyr):
df %>% mutate_at(vars(-Steve, -Adam), as.numeric)

vars(-Steve, -Adam)表示排除Steve和Adam列,仅对剩余列执行as.numeric转换。

  1. 使用mutate_if结合列名判断:
df %>% mutate_if(~!colnames(df) %in% c("Steve", "Adam"), as.numeric)

通过逻辑条件筛选出列名不在指定列表中的列,再进行数值转换。

  1. 使用across(dplyr 1.0.0及以上版本推荐):
df %>% mutate(across(-c(Steve, Adam), as.numeric))

across是dplyr新版本的语法,-c(Steve, Adam)直接排除目标列,写法更简洁直观。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 10:36:23