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

按patient_ID分组提取对应舒张压最大值的血压测量数据方案

按患者分组提取舒张压最高的对应血压记录

我们有一个记录患者多次血压测量的数据集,每行代表一次独立观测,结构如下:

# 示例数据集
bp_data <- data.frame(
  patient_ID = c('1','1','1','2','2','2'),
  bp_systolic = c(80, 85, 72, 95, 90, 75),
  bp_diastolic = c(120, 133, 100, 140, 130, 120)
)

需求是按patient_ID分组,提取每组中舒张压(bp_diastolic)最高的那次测量对应的收缩压和舒张压,必须保证两个血压值来自同一次测量,不能分别取各组收缩压和舒张压的最大值。


方法1:Base R实现

通过分组排序后提取每组的目标记录:

# 按患者ID分组,每组内按舒张压降序排序
sorted_data <- bp_data[order(bp_data$patient_ID, -bp_data$bp_diastolic), ]
# 提取每组的第一条记录(排序后最高舒张压的记录排在每组最前)
result <- sorted_data[!duplicated(sorted_data$patient_ID), ]
# 重命名列名匹配需求
colnames(result) <- c("patient_ID", "highest_systolic", "highest_diastolic")

# 查看结果
result

方法2:tidyverse(dplyr)实现

用dplyr的分组筛选功能,逻辑更直观:

library(dplyr)

result <- bp_data %>%
  group_by(patient_ID) %>%
  # 筛选出每组中舒张压最大的行
  filter(bp_diastolic == max(bp_diastolic)) %>%
  # 重命名列名
  rename(highest_systolic = bp_systolic,
         highest_diastolic = bp_diastolic) %>%
  ungroup()

# 查看结果
result

最终结果表

patient_IDhighest_systolichighest_diastolic
185133
295140

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 22:32:35