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

R中使用dplyr基于行列值筛选指定动脉mass指标列的方法

解决方案

方法1:依赖指标固定顺序实现(简洁高效)

已知每条动脉对应固定顺序的5个指标,mass为每组第5个指标,直接匹配目标动脉对应列即可:

library(dplyr)

# 定义需要提取的目标动脉编号
target_artery <- c("1", "11")

# 识别动脉起始列位置
artery_cols <- colnames(data)[!grepl("^\\.\\.\\.", colnames(data))]
artery_start_pos <- match(artery_cols, colnames(data))
# 每组第5列为mass,计算mass列位置
mass_col_pos <- setNames(artery_start_pos + 4, artery_cols)

# 筛选目标列
result <- data %>% select(all_of(mass_col_pos[target_artery]))

运行后输出结果和要求的预期完全一致。


方法2:不依赖列顺序的通用实现(稳定性更高)

如果后续列顺序可能发生变动,可通过第一行值和动脉匹配逻辑实现,适用范围更广:

library(dplyr)
library(tidyr)

target_artery <- c("1", "11")

# 生成列位置和所属动脉的映射表
col_map <- tibble(col_pos = seq_along(colnames(data))) %>%
  mutate(
    is_artery_start = !grepl("^\\.\\.\\.", colnames(data)[col_pos]),
    artery_id = ifelse(is_artery_start, colnames(data)[col_pos], NA_character_)
  ) %>%
  fill(artery_id, .direction = "down")

# 筛选满足两个条件的列:第一行值为mass + 属于目标动脉
target_cols <- col_map %>%
  filter(data[1, col_pos] == "mass", artery_id %in% target_artery) %>%
  pull(col_pos)

result <- data %>% select(all_of(target_cols))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.09 21:12:01