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

使用dplyr::rename()重命名R数据框报错,如何解决?

解决dplyr::rename报错的方法

第一步:确认数据集的实际列名

错误核心是你要重命名的原列名(比如trip_id)在数据集中不存在,先执行以下代码查看所有列名:

# 快速查看列名
colnames(X202112_divvy_tripdata)
# 查看更详细的数据集结构(含列名和数据类型)
dplyr::glimpse(X202112_divvy_tripdata)

执行后你能看到数据集里真实存在的列名——比如Divvy 2021年12月的数据集可能已经采用了新的列名规范(直接包含ride_id而非trip_id),这会导致你写的原列名和实际不符。

第二步:调整重命名映射

根据第一步得到的真实列名,修改dplyr::rename的参数,格式为新列名 = 原列名。举个例子:如果你的数据集里没有trip_id,反而已经有ride_id,那这一行映射就可以直接删掉;如果原列名是tripId(大小写差异),就改成对应的写法。

假设查看后确认原列名是tripId、bike_id、start_time等,调整后的代码示例如下:

X202112_divvy_tripdata <- dplyr::rename(
  X202112_divvy_tripdata,
  ride_id = tripId,
  rideable_type = bike_id,
  started_at = start_time,
  ended_at = end_time,
  start_station_name = from_station_name,
  start_station_id = from_station_id,
  end_station_name = to_station_name,
  end_station_id = to_station_id,
  member_casual = usertype
)

备选方案:用rename_with批量处理(若列名有规律)

如果原列名和目标列名有统一规律,也可以用dplyr::rename_with批量重命名:

# 先定义原列名到目标列名的映射表
name_mapping <- c(
  "tripId" = "ride_id",
  "bike_id" = "rideable_type",
  "start_time" = "started_at",
  "end_time" = "ended_at",
  "from_station_name" = "start_station_name",
  "from_station_id" = "start_station_id",
  "to_station_name" = "end_station_name",
  "to_station_id" = "end_station_id",
  "usertype" = "member_casual"
)

# 批量重命名
X202112_divvy_tripdata <- dplyr::rename_with(
  X202112_divvy_tripdata,
  ~ name_mapping[.x],
  names(name_mapping)
)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 21:05:11