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

如何在Stata中重塑/转置病例与对照ID数据?

Stata数据重塑:将病例-对照宽格式转长格式

你当前的问题是宽格式的病例-对照数据无法直接用reshape long处理,因为CaseA没有和ControlB*一致的后缀结构。以下是两种可行的解决方案:

方案一:使用stack命令(更简洁)

stack命令可直接将多列堆叠为一列,同时保留分组变量(这里是IndexDate):

* 假设原始数据已加载
stack CaseA ControlB1-ControlB4, into(IDs) by(IndexDate) clear
gen Case_control = (_stack == 1)  // 标记病例为1,对照为0
drop _stack  // 移除stack生成的临时变量
sort IndexDate Case_control descending  // 按索引日期排序,病例排在前面

方案二:分步骤处理(更直观)

如果对stack命令不熟悉,可分两步分别处理病例和对照,再合并数据:

* 第一步:提取病例数据
preserve
keep CaseA IndexDate
rename CaseA IDs
gen Case_control = 1
tempfile case_data
save `case_data'
restore

* 第二步:提取并重塑对照数据
drop CaseA
reshape long ControlB, i(IndexDate) j(control_id)
rename ControlB IDs
gen Case_control = 0
drop control_id

* 第三步:合并病例和对照数据
append using `case_data'
sort IndexDate Case_control descending

处理后结果示例

最终数据会匹配你想要的目标格式:

IDsIndexDateCase_control
ID_x1/1/011
ID_11/1/010
ID_21/1/010
ID_31/1/010
ID_41/1/010
ID_y1/2/011
.........

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 09:43:23