数据集横转纵的 R 实现方法(持更

发布时间:2026/7/12 8:38:00
数据集横转纵的 R 实现方法(持更 在临床试验中源数据常以横向结构存储——即每个检查项是一个独立变量/列。而 SDTM 要求以纵向结构输出即每个检查项对应一行记录一个--TESTCD。一、pivot_longer()来自tidyr包是 tidyverse 生态中最主流的横转纵函数。library(tidyr) library(dplyr) # 假设原始数据每列是一个检查项 raw - data.frame( USUBJID c(SUBJ01, SUBJ02), VISITNUM c(1, 1), HR c(72, 80), # 心率 SYSBP c(120, 130), # 收缩压 DIABP c(80, 85) # 舒张压 ) # 横转纵 vs_long - raw %% pivot_longer( cols c(HR, SYSBP, DIABP), # 需要转换的列 names_to VSTESTCD, # 列名 → VSTESTCD values_to VSORRES # 值 → VSORRES )当每个检查项同时有结果值和单位等多列时# 假设原始数据每列是一个检查项 raw - data.frame( USUBJID SUBJ01, HR_VAL 72, HR_UNIT beats/min, SYSBP_VAL 120, SYSBP_UNIT mmHg ) # 横转纵 vs_long - raw %% pivot_longer( cols -USUBJID, names_to c(VSTESTCD, .value), # 按分隔符拆分列名 names_sep _ # 分隔符 ) # 结果VSTESTCD | VAL | UNIT # HR | 72 | beats/min # SYSBP | 120 | mmHg二、for循环法适合需要对每个检查项做不同逻辑处理的场景。