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

如何匹配数据框列名与类别向量并添加类别行至数据框

问题与解决方案

需求说明

将数据集data的列名与category_vector中的Name列匹配,为data每一列分配对应的Category值,再把这些类别值作为第一行添加到data中。

原始代码

data <- rbind(c(1,2,3,4,5,6),
              c(1,2,3,4,5,6),
              c(1,2,3,4,5,6))

colnames(data) <- c("A", "B", "C", "D", "E", "F")

category_vector <- cbind(c("A", "B", "C", "D", "E"),
                         c("Cat1", "Cat2", "Cat3", "Cat2", "Cat5"))
colnames(category_vector) <- c("Name", "Category")

期望输出

output <- rbind(c("Cat1", "Cat2", "Cat3", "Cat2", "Cat5", "NA"),
                c(1,2,3,4,5,6),
                c(1,2,3,4,5,6),
                c(1,2,3,4,5,6))
colnames(output) <- colnames(data)

实现方案

完整代码

# 匹配列名与Name列,提取对应Category值
category_row <- category_vector[match(colnames(data), category_vector[, "Name"]), "Category"]
# 把未匹配到的NA转为字符型"NA"
category_row[is.na(category_row)] <- "NA"

# 将类别行添加到data最前方
output <- rbind(category_row, data)
# 保持原列名不变
colnames(output) <- colnames(data)

代码解释

  • match(colnames(data), category_vector[, "Name"]):返回data列名在category_vector$Name中的位置索引,无匹配项返回NA
  • category_vector[..., "Category"]:根据索引提取对应类别值,未匹配位置自动为NA
  • rbind(category_row, data):将类别行作为首行合并到原数据集,此时整个数据集会转为字符型(符合期望输出的格式要求)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 02:05:09