Stata 为在两个组合期间出现两种情况之一的个人创建虚拟

Stata 为在两个组合期间出现两种情况之一的个人创建虚拟,stata,panel-data,dummy-variable,Stata,Panel Data,Dummy Variable,我用的是Stata 我想了解从TUS获得的描述性统计数据(即时间使用调查):全职工人每天工作的总时间(因为这些数据来自卢森堡,全职工人的工作日至少为8小时)。 因此,我在TUS的子样本上工作,其中只有声明被雇用的人 在这个数据集(子样本)中,每人有两次观察,一次在周末,一次在一周内(即,这是一种短面板数据集) 因为我只对全职工作的人感兴趣,所以我想衡量两类人在这两天的总工作时间: 在一周内工作的个人,每周工作时间为8小时或以上,周末工作时间为0小时(周六和周日) 在一周和周末工作的个人(如服务员

我用的是Stata

我想了解从TUS获得的描述性统计数据(即时间使用调查):全职工人每天工作的总时间(因为这些数据来自卢森堡,全职工人的工作日至少为8小时)。 因此,我在TUS的子样本上工作,其中只有声明被雇用的人

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

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

  • 在一周内工作的个人,每周工作时间为8小时或以上,周末工作时间为0小时(周六和周日)
  • 在一周和周末工作的个人(如服务员、护士、司机等),工作时间为一周8小时或以上,周末8小时或以上
  • [问题1]当个体为1时,如何创建一个1的变量。或2。否则呢

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

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


    几天来,我一直在为我的两个问题寻找答案,在我把问题贴在这里之后不久,我找到了一个答案,我将与大家分享

    第一到第三点引出问题1的答案。;第四点和第五点引出问题2的答案。

    首先,我生成总的每日工作时间,它由四个相互排斥的工作活动(工作1工作2工作3工作4)所花费的时间给出;变量weekend==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_工人创建了一个等于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"
    

    这里的问题至少应该尝试一些代码。否则,最好显示一个数据示例。没有理由强迫其他人发明变量名、数据示例等:其他人很难吸收一个长单词描述类型
    ssc inst dataex
    来安装一个程序,这使得您给我们一个数据示例很容易。非常感谢您的建议@NickCox!很高兴你解决了你的问题。如果您想让它对其他人更有用,您可以通过包含一个令牌数据示例使其自包含。旅行的一般想法是什么?请注意,
    genworker=work\u statst==0
    是您第一点的更简洁的解决方案。感谢@NickCox的消息。在我习惯了dataex命令之后(也谢谢!)我在问题中引入了一个数据集示例(参见[UPDATE])。示例数据和代码仍然不能一起工作。没有变量
    work\u stat
    (或者是
    work\u stat
    ?)。因此,代码将在第一次故障时失败。
    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"