基于经济实验数据集按条件生成Individual Variable,构建面板数据集
嘿,我完全get到你的需求了——你需要把那些编号相同但来自不同实验场次(不同Date、Time或者Server)的Subject区分开,生成一个唯一的Indiv标识,这样就能顺利构建面板数据了对吧?
先帮你理清楚问题核心:每个真实个体是由Date、Time、Server和Subject这四个变量的组合唯一确定的——比如同一个Subject 1,在9点、Server 1下是一个人,在9点、Server 2下就是另一个人,我们要给每一组这样的组合分配专属ID。
你的原始数据集子集
Date Time Period Server Subject Indiv 1004 9 1 1 1 NA 1004 9 1 1 2 NA 1004 9 1 2 1 NA 1004 9 1 2 2 NA 1004 9 2 1 1 NA 1004 9 2 1 2 NA 1004 9 2 2 1 NA 1004 9 2 2 2 NA 1004 13 1 1 1 NA 1004 13 1 1 2 NA 1004 13 1 2 1 NA 1004 13 1 2 2 NA 1004 13 2 1 1 NA 1004 13 2 1 2 NA 1004 13 2 2 1 NA 1004 13 2 2 2 NA
你期望的目标结果
Date Time Period Server Subject Indiv 1004 9 1 1 1 1 1004 9 1 1 2 2 1004 9 1 2 1 3 1004 9 1 2 2 4 1004 9 2 1 1 1 1004 9 2 1 2 2 1004 9 2 2 1 3 1004 9 2 2 2 4 1004 13 1 1 1 5 1004 13 1 1 2 6 1004 13 1 2 1 7 1004 13 1 2 2 8 1004 13 2 1 1 5 1004 13 2 1 2 6 1004 13 2 2 1 7 1004 13 2 2 2 8
下面是两种常用统计工具的实现方法,选你日常用的就行:
方法1:使用R(dplyr包)
如果你习惯用R处理数据,dplyr的分组功能可以一步到位:
# 没装过dplyr的话先运行这行安装 # install.packages("dplyr") library(dplyr) # 假设你的数据框名为df,生成Indiv变量 df <- df %>% # 按四个关键变量分组,每组对应一个真实个体 group_by(Date, Time, Server, Subject) %>% # 给每个组分配唯一的连续ID mutate(Indiv = cur_group_id()) %>% # 取消分组,避免后续操作受分组影响 ungroup()
运行后,每一组(Date, Time, Server, Subject)都会得到从1开始的唯一整数ID,和你要的结果完全匹配。
方法2:使用Stata
如果是用Stata做面板分析,egen命令的group函数是最直接的解决方案:
* 假设你的数据集名为data,生成Indiv变量 egen Indiv = group(Date Time Server Subject)
这个命令会自动识别所有唯一的变量组合,给每个组合分配专属的数值标识,完美实现你的需求。
内容的提问来源于stack exchange,提问作者Marc
相关产品推荐
相关产品推荐

