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

R语言数据框缩放:保留前9列标识并合并缩放后列的实现方法

解决方法

scale() 函数返回的是和输入数据行顺序完全一致的矩阵,不需要走merge这种重匹配的操作,直接按列绑定即可,执行效率也适配400万行的大数据量。

方案1:直接列绑定(最高效,推荐)

注意你原来的代码df[-9]是仅移除第9列,前8列标识也会被纳入标准化,不符合只缩放特征列的需求,正确写法如下:

# 仅对第10列及之后的特征列做标准化,转成dataframe方便后续处理
dfscaled <- as.data.frame(scale(df[,-c(1:9)]))
# 直接绑定前9列标识和缩放后的特征
df_final <- cbind(df[,c(1:9)], dfscaled)

注意:cbind 要求两个对象的行数完全相等,scale处理后的矩阵和原数据行数100%匹配,只要你没对原数据做过排序、过滤操作,不需要额外校验行顺序。

方案2:行匹配合并(仅适合缩放后调整过行顺序的场景,大表性能较差)

如果你的数据在缩放后做过行顺序调整,可以先加唯一行ID再做merge:

# 先给原数据加唯一行ID
df$row_id <- 1:nrow(df)
# 缩放特征列
dfscaled <- as.data.frame(scale(df[,-c(1:9, ncol(df))]))
# 给缩放后的数据集补上行ID
dfscaled$row_id <- df$row_id
# 按行ID merge
df_final <- merge(df[,c(1:9, ncol(df))], dfscaled, by = "row_id")
# 可选删除临时行ID列
df_final$row_id <- NULL

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.11 19:39:02