1

我正在使用Stata。

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

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

因为我只对那些全职工作的人感兴趣,所以我想衡量两类人在这两天内的总工作时间:

  1. 工作日工作时间为 8 小时或以上,周末工作时间为 0 小时(周六和周日)的个人;
  2. 在工作日和周末工作的个人(例如,服务员、护士、司机等),工作日的工作时间为 8 小时或以上,周末的工作时间为 8 小时或以上。

[问题 1]如何创建一个变量,当个体为 1. 或 2. 时为 1,否则为 0?

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

[更新] 这里我发布了一部分数据集作为示例(通过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
4

1 回答 1

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"

第四,我为在我们工作的 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,而对于在工作日全职工作并在我们休息的人等于 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"
于 2016-08-18T12:38:02.643 回答