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

如何按列名整理R语言dataframe 使每列仅保留对应标识的取值

R语言数据框按列匹配前缀过滤取值方案

方案1:tidyverse生态实现

  • 依赖包:dplyr、stringr
library(dplyr)
library(stringr)

df_clean <- df %>%
  # 遍历所有列执行匹配规则
  mutate(across(everything(), ~ifelse(str_starts(.x, cur_column()), .x, "NA")))

逻辑说明:across(everything())遍历数据框全部列,cur_column()动态获取当前处理的列名,str_starts()判断单元格取值是否以对应列名作为前缀,匹配则保留原值,不匹配则填充为"NA"。

方案2:基础R实现(无需额外安装依赖)

df_clean <- df
# 遍历所有列名执行过滤
for (col_name in colnames(df_clean)) {
  df_clean[[col_name]] <- ifelse(startsWith(df_clean[[col_name]], col_name), df_clean[[col_name]], "NA")
}

逻辑说明:用for循环遍历所有列,调用R基础函数startsWith()做前缀匹配,执行和上述方案一致的替换规则。

输出验证

执行上述任意代码后得到的df_clean结果如下:

P1P2P3P4P5
P1 -> (Normal,_)NANANANA
P1 -> (Normal,_)NAP3 -> (UP,_)P4 -> (UP,_)NA
NAP2 -> (UP,_)NANANA
NANANANANA

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 06:15:06