【问题标题】:create dummy for individuals with either of two conditions over two combined periods在两个组合期间为具有两种条件之一的个人创建虚拟对象
【发布时间】:2016-12-25 02:29:48
【问题描述】:

我正在使用 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

【问题讨论】:

  • 这里的问题至少应该尝试一些代码。否则,最好显示一个数据示例。没有理由强迫别人发明变量名、数据示例等:别人很难吸收长单词描述输入ssc inst dataex安装程序,方便您给我们一个数据示例。
  • 非常感谢@NickCox 的建议!

标签: stata panel-data dummy-variable


【解决方案1】:

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

从第 1 点到第 3 点得出问题 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"

【讨论】:

  • 很高兴您解决了您的问题。如果您想让它对其他人更有用,您将通过包含一个令牌数据示例使其自包含。旅行的一般想法是什么?请注意,gen worker = work_stast == 0 是您第一点的更简洁的解决方案。
  • 感谢@NickCox 的留言。在我习惯了 dataex 命令后(也谢谢!)我在问题中介绍了一个数据集示例(参见 [UPDATE])。
  • 示例数据和代码仍然无法协同工作。没有变量work_stat(或者是work_stast?)。因此,代码将在第一个 blick 时失败。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-12-25
  • 1970-01-01
  • 1970-01-01
  • 2021-03-03
  • 1970-01-01
  • 2013-07-05
  • 1970-01-01
相关资源
最近更新 更多