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

基于经济实验数据集按条件生成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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 07:23:30