为具有两个合并期间的两个条件之一的个人创建假人

时间:2016-08-18 08:34:07

标签: stata panel-data dummy-variable

我正在使用Stata。

我正在追踪从TUS获得的描述性统计数据(即时间使用调查):全职工作人员的每日总时间(因为这些数据来自卢森堡,工作日至少为8小时)全职工人)。 因此,我在TUS的子样本上工作,那里只有人被宣布就业。

在此(数据集的子样本)中,每个人有两个观察结果,一个在周末,一个在一周(即,它是一种短面板数据集)。

由于我对那些全职工作的人感兴趣,我想测量这两天中两类人的总工作时间:

  1. 在一周内工作的人,一周工作时间为8小时或周末(周六和周日)0;
  2. 在一周和周末工作的人(例如,服务员,护士,司机等......),工作时间为一周工作时间为8小时或更长时间,周末工作时间为8小时或更长时间
  3. [问题1] 如果个人是1或2,我怎样才能创建一个变量为1,否则为0?

    [问题2] 一旦我为全职工作者创建了虚拟变量,我想创建另一个虚拟变量,对于仅在工作日工作的工人为1,工人为0谁也在周末工作,我怎么能这样做?

    [UPDATE] 在这里,我发布了一部分数据集作为示例(使用datasex获得):

    clear
    input double(working_act1 working_act2 working_act3 working_act4) float weekend double  id_ind
    0 0                  0                  0                  0 1 4015801
    0 0                  0  .3333333333333339 11.666666666666668 0 4017501
    0 0                  0                  0                  0 1 4017501
    0 0                  0 .16666666666666785                  8 0 4017601
    0 0                  0                  0                  0 1 4017601
    0 0                  0                  0  8.166666666666668 0 4017602
    0 0                  0                  0                  0 1 4017602
    0 0                  0                  0  7.166666666666669 0 4017801
    0 0                  0                  0                  0 1 4017801
    0 0 .16666666666666785                  0  3.666666666666668 0 4017802
    0 0                  0 .33333333333333215                  7 1 4017802
    0 0                  0                  0 12.000000000000002 0 4018001
    0 0                  0                  0                  0 1 4018001
    0 0                  0                  0  6.333333333333332 0 4018002
    0 0                  0                  0                  0 1 4018002
    0 0                  0                  0   9.16666666666667 0 4019201
    0 0                  0                  0   9.16666666666667 1 4019201
    0 0 .16666666666666607                 .5  8.333333333333334 0 4019504
    0 0                  0                  0                  0 1 4019504
    0 0                  0                  0                6.5 0 4019901
    0 0                  0                  0                  8 1 4019901
    0 0                  0                  0  6.166666666666668 0 4020001
    0 0                  0                  0                  0 1 4020001
    end
    

1 个答案:

答案 0 :(得分:1)

我几天来一直在研究我的两个问题的答案,在我在这里发布问题后不久,我找到了答案,我与你分享。

积分从第一到第三导致问题1的回答。第四和第五点导致问题2的答案。

首先,我生成每天的总工作时间,这是由四个互斥的工作活动所花费的时间给出的(working_act1 working_act2 working_act3 working_act4);当观察指的是周末日时,变量周期== 1,否则为0

cap drop tsw
egen tsw        =   rowtotal(working_act1 working_act2 working_act3 working_act4)
label var tsw "Time spent working"
tab tsw if weekend==0
tab tsw if weekend==1

其次,我创建了一个变量,告诉我某个人在某个特定的日子是不工作还是全职工作

cap drop ft_workrest_day
gen ft_workrest_day = (tsw >=8) | tsw==0 if weekend==1
replace ft_workrest_day = (tsw >=8) if weekend==0
label var ft_workrest_day "Worked_8h or rested"

第三,我创建了一个等于2的变量(即变量id_ind),他们在一天工作了一天,休息了一天,以及那些为所有其他人工作这一天的人缺少

cap drop ft_worker
bys id_ind: egen ft_worker = total(cond(ft_workrest_day>0, ft_workrest_day, .))
replace ft_worker = . if ft_worker==0 | ft_worker==1
label var ft_worker "Works at least 8h"

第四,我为在w-e工作的ft_workers创建一个等于1的变量

cap drop we_worker_2
gen we_worker_2 = 0 if ft_worker==2 
replace we_worker_2 = 1 if tsw!=0 & ft_worker==2 & weekend==1
browse id_ind weekend tsw ft_workrest_day ft_worker we_worker_2
label var we_worker_2 "Works at least 8h in the w-e"

第五,当一个人在两天全职工作时,我创建一个等于1的变量,而对于那些在工作日工作全职并且在w-e中休息的人来说,等于0。

cap drop we_worker_1
bys id_ind: egen we_worker_1 = max(we_worker_2)
browse id_ind weekend tsw ft_workrest_day ft_worker we_worker_2 we_worker_1
label var we_worker_1 "Full-time w-e worker"