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

如何在R中找到与指定列名最接近的列并修改列名?

在R中匹配最接近指定字符串的列名并重命名

问题背景

现有如下DataFrame:

sample_df = data.frame(mondaya = c(1,1,1), tuesday_b = c(2,2,2), mondayb = c(1,1,1))

需求是找到列名最接近monday的列,将其重命名为monday_a,询问R中是否有标准实现方法,同时给出了自己当前使用的方法:

library(stringdist)

distances <- stringdist("monday", colnames(sample_df))

closest_col_index <- which.min(distances)

colnames(sample_df)[closest_col_index] <- "monday_a"

解答

R本身没有专门针对这个需求的内置标准函数,但你目前使用stringdist包的方法已经是非常合理的实现方式:

  • stringdist默认采用Damerau-Levenshtein距离,能精准计算字符串间的编辑距离,很适合用来匹配最接近的列名
  • 需要注意:如果存在多个列与目标字符串的距离相同(比如示例中的mondaya和mondayb与monday的距离都是1),which.min会返回第一个符合条件的列索引

如果不想额外加载第三方包,也可以用基础R的adist函数实现类似效果,代码如下:

# 计算编辑距离
distances <- adist("monday", colnames(sample_df))[, 1]
# 找到距离最小的列索引
closest_col_index <- which.min(distances)
# 重命名列
colnames(sample_df)[closest_col_index] <- "monday_a"

adist计算的是Levenshtein编辑距离,和stringdist默认逻辑略有差异,但同样能满足匹配最接近列名的需求,且无需额外安装包。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 00:16:02