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

如何在R中将单测量数据框合并至多测量数据框并按时间排序

合并血压测量数据框并按时间排序

现有两个R语言数据框:

  • df1:存储每个ID在多个时间点的BP1、BP2重复测量数据
  • df2:存储每个ID的BP1、BP2单次测量数据
    需将二者合并,并按ID分组后对Time变量升序排列,得到目标数据框。

数据定义

# 构建df1
ID <- c(1,1,1,2,2,2,3,3,4)
Time <- c(56,57,58,61,62,64,66,67,72)
BP1 <- c(70,73,73,74,75,76,74,74,70)
BP2 <- c(122,122,123,126,124,121,130,132,140)
df1 <- data.frame(ID, Time, BP1, BP2)

# 构建df2
ID <- c(1,2,3,4)
Time <- c(55, 60, 65, 70)
BP1 <- c(70, 72, 73, 74)
BP2 <- c(120, 124, 130, 134)
df2 <- data.frame(ID, Time, BP1, BP2)

解决方法

方法1:基础R实现

先合并两个数据框,再按ID和Time排序:

# 合并两个数据框
combined_df <- rbind(df1, df2)
# 按ID分组,对Time升序排列
sorted_df <- combined_df[order(combined_df$ID, combined_df$Time), ]
# 重置行名(可选操作)
rownames(sorted_df) <- NULL

方法2:tidyverse(dplyr)实现

用bind_rows合并数据,arrange完成排序,代码更简洁直观:

library(dplyr)

sorted_df <- bind_rows(df1, df2) %>%
  arrange(ID, Time)

最终结果示例

运行上述代码后,排序后的数据框前几行如下:

> head(sorted_df)
  ID Time BP1 BP2
1  1   55  70 120
2  1   56  70 122
3  1   57  73 122
4  1   58  73 123
5  2   60  72 124
6  2   61  74 126

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 01:40:26