Stata 创建在另一个变量中使用垂直查找的变量

Stata 创建在另一个变量中使用垂直查找的变量,stata,Stata,如何通过查看另一个变量中的多个观察值来创建一个表示某个条件存在或不存在(0/1)的变量?(因此,此垂直查找受时间段的限制。) 例如,在下面的示例代码中,仅当类别1在相应的一周内显示时,所有类别(1、2和3)的新变量tag_prodcateg1才应等于1 我只能一次完成所有观察(即不是每周进行): 这似乎很管用 generate pc1p = prodcategory==1 & promo==1 bysort week (product): egen tag1 = max(pc1p)

如何通过查看另一个变量中的多个观察值来创建一个表示某个条件存在或不存在(0/1)的变量?(因此,此垂直查找受时间段的限制。)

例如,在下面的示例代码中,仅当类别1在相应的一周内显示时,所有类别(1、2和3)的新变量
tag_prodcateg1
才应等于1

我只能一次完成所有观察(即不是每周进行):


这似乎很管用

generate pc1p = prodcategory==1 & promo==1
bysort week (product): egen tag1 = max(pc1p)
这将产生以下结果

. list, clean noobs

    product   prodca~y   promo   week   tag_pr~1   pc1p   tag1  
          A          1       1      1          1      1      1  
          B          1       0      1          1      0      1  
          C          2       1      1          1      0      1  
          D          2       1      1          1      0      1  
          E          3       0      1          1      0      1  
          F          3       0      1          1      0      1  
          A          1       0      2          0      0      0  
          B          1       0      2          0      0      0  
          C          2       1      2          0      0      0  
          D          2       1      2          0      0      0  
          E          3       0      2          0      0      0  
          F          3       0      2          0      0      0  
上面的代码解决了最初的问题:如果一个观察值是productcategory=1且promo=1,则为给定一周内的所有观察值创建一个1的变量。现在,问题已经更新,如果在给定的一周内没有productcategory=1的观察结果,则变量需要为2,而不是0

上面的代码显示了将一个观察结果复制到其他相关观察结果的一般技术。为了解决这个新问题,同样的技术也将被应用。下面的代码符合我的理解。但教训是,允许解决原始问题的相同技术可以被理解并用于进一步解决本质上相同的问题

generate pc1p = prodcategory==1 & promo==1
bysort week (product): egen tag1 = max(pc1p)
generate pc2 = prodcategory==1
bysort week (product): egen tag2 = max(pc2)
replace tag1 = 2 if tag1==0 & tag2==0
list, clean noobs
这将产生以下结果,当productcategory 1未出现时,tag1现在在第3周的观察中取值2

. list, clean noobs

product   prodca~y   promo   week   tag_pr~1   pc1p   tag1   pc2   tag2  
      A          1       1      1          1      1      1     1      1  
      B          1       0      1          1      0      1     1      1  
      C          2       1      1          1      0      1     0      1  
      D          2       1      1          1      0      1     0      1  
      E          3       0      1          1      0      1     0      1  
      F          3       0      1          1      0      1     0      1  
      A          1       0      2          0      0      0     1      1  
      B          1       0      2          0      0      0     1      1  
      C          2       1      2          0      0      0     0      1  
      D          2       1      2          0      0      0     0      1  
      E          3       0      2          0      0      0     0      1  
      F          3       0      2          0      0      0     0      1  
      X          4       1      3          .      0      2     0      0  
      Y          4       1      3          .      0      2     0      0  

这似乎很管用

generate pc1p = prodcategory==1 & promo==1
bysort week (product): egen tag1 = max(pc1p)
这将产生以下结果

. list, clean noobs

    product   prodca~y   promo   week   tag_pr~1   pc1p   tag1  
          A          1       1      1          1      1      1  
          B          1       0      1          1      0      1  
          C          2       1      1          1      0      1  
          D          2       1      1          1      0      1  
          E          3       0      1          1      0      1  
          F          3       0      1          1      0      1  
          A          1       0      2          0      0      0  
          B          1       0      2          0      0      0  
          C          2       1      2          0      0      0  
          D          2       1      2          0      0      0  
          E          3       0      2          0      0      0  
          F          3       0      2          0      0      0  
上面的代码解决了最初的问题:如果一个观察值是productcategory=1且promo=1,则为给定一周内的所有观察值创建一个1的变量。现在,问题已经更新,如果在给定的一周内没有productcategory=1的观察结果,则变量需要为2,而不是0

上面的代码显示了将一个观察结果复制到其他相关观察结果的一般技术。为了解决这个新问题,同样的技术也将被应用。下面的代码符合我的理解。但教训是,允许解决原始问题的相同技术可以被理解并用于进一步解决本质上相同的问题

generate pc1p = prodcategory==1 & promo==1
bysort week (product): egen tag1 = max(pc1p)
generate pc2 = prodcategory==1
bysort week (product): egen tag2 = max(pc2)
replace tag1 = 2 if tag1==0 & tag2==0
list, clean noobs
这将产生以下结果,当productcategory 1未出现时,tag1现在在第3周的观察中取值2

. list, clean noobs

product   prodca~y   promo   week   tag_pr~1   pc1p   tag1   pc2   tag2  
      A          1       1      1          1      1      1     1      1  
      B          1       0      1          1      0      1     1      1  
      C          2       1      1          1      0      1     0      1  
      D          2       1      1          1      0      1     0      1  
      E          3       0      1          1      0      1     0      1  
      F          3       0      1          1      0      1     0      1  
      A          1       0      2          0      0      0     1      1  
      B          1       0      2          0      0      0     1      1  
      C          2       1      2          0      0      0     0      1  
      D          2       1      2          0      0      0     0      1  
      E          3       0      2          0      0      0     0      1  
      F          3       0      2          0      0      0     0      1  
      X          4       1      3          .      0      2     0      0  
      Y          4       1      3          .      0      2     0      0  

这在(周)之前压缩为
egen tag1=max(prodcategory==1&promo==1)。为什么数据集中没有状态?William的代码没有问题,它没有做原始问题中没有的事情。只要将您的计算值设置为0或1即可。如果相关变量为2,则将
替换为缺失。在最近的评论中,您已正确回答了您在第二个最新评论中提出的问题。在最近的第三条评论中,我只能建议您熟悉Stata文档。
help by
help egen
的输出将帮助您开始回答问题,您可以阅读Stata数据管理参考手册PDF中
by
egen
的完整文档,该手册随Stata安装一起提供,可从Stata的“帮助”菜单访问。Stata提供了非常好的文档,充分偿还了研究它所花费的时间。这在(周)之前浓缩为
egen tag1=max(prodcategory==1&promo==1)。为什么数据集中不存在状态?William的代码没有问题,它没有做原始问题中没有的事情。只要将您的计算值设置为0或1即可。如果相关变量为2,则将
替换为缺失。在最近的评论中,您已正确回答了您在第二个最新评论中提出的问题。在最近的第三条评论中,我只能建议您熟悉Stata文档。
help by
help egen
的输出将帮助您开始回答问题,您可以阅读Stata数据管理参考手册PDF中
by
egen
的完整文档,该手册随Stata安装一起提供,可从Stata的“帮助”菜单访问。Stata提供了非常好的文件,充分偿还了花在研究上的时间。