Stata:根据年度数据减少观测值。

我想创建一个变量,这个变量的值是1或0,如果一个公司(companyid 下图)每年都是 “多色”。下面是我的数据。

* Example generated by -dataex-. To install: ssc install dataex
clear
input str6 companyid int year float(red blue green)
"001045" 2015 0 1 0
"001045" 2015 0 1 0
"001045" 2015 0 1 0
"001045" 2015 0 1 0
"001045" 2017 1 0 0
"001045" 2017 1 0 0

"001049" 2019 0 1 0
"001049" 2019 0 0 1

"001055" 2018 1 0 0
"001055" 2018 0 1 0
"001055" 2018 0 0 1

例如,#001055公司2018年的数据是红色、蓝色和绿色 所以这个 “多色 “变量应该等于1。

此外,我还想为不同的组合创建变量。即,如果一家公司在每一年都是红色,蓝色=1,则红蓝变量=1。

我试图用 bysort companyid year: gen multicolor = 1 if red == 1 & blue == 1 & green == 1 但我意识到,这在我想完成的任务中还缺少很多东西。

总的目标是减少多年度的观察,所以我有一个观察每年每个公司。

这个单年公司记录将有信息,如果该公司是红色,绿色,蓝色,或这些颜色的确切混合,如果它是混合的。下面是我想从上面的数据中创建数据的例子。

input str6 companyid int year float(red blue green r-b-g red-blue blue-green ...more...)
"001045" 2015 0 1 0 0 0 0 ...
"001045" 2017 1 0 0 0 0 0 ...
"001049" 2019 0 0 0 0 0 1 ...
"001055" 2018 0 0 0 1 0 0 ...

解决方案:

我想这比你担心的要简单得多。首先, collapse 到最大值,按公司和年份划分。然后,您就可以得到以下的单个数值 red blue green. 其次,将这些值连在一起,这样就可以使 "110" 是红色和蓝色但不是绿色,以此类推。

tabulate 会生成所有在数据中发现的组合对应的指标。

实际上,3种颜色和2种可能性允许二进制编码,字符串也是一个二进制数。

真1和假0的对应关系,即最大超过0s和1s表示 “任何”,最小超过0s和1s表示 “所有”,这一点一旦理解就很明显了,但值得解释的是其他方面。关于Stata的上下文,请看 本常见问题

clear
input str6 companyid int year float(red blue green)
"001045" 2015 0 1 0
"001045" 2015 0 1 0
"001045" 2015 0 1 0
"001045" 2015 0 1 0
"001045" 2017 1 0 0
"001045" 2017 1 0 0
"001049" 2019 0 1 0
"001049" 2019 0 0 1
"001055" 2018 1 0 0
"001055" 2018 0 1 0
"001055" 2018 0 0 1
end 

collapse (max) red blue green, by(companyid year) 

egen colors = concat(red blue green)

list

     +-----------------------------------------------+
     | compan~d   year   red   blue   green   colors |
     |-----------------------------------------------|
  1. |   001045   2015     0      1       0      010 |
  2. |   001045   2017     1      0       0      100 |
  3. |   001049   2019     0      1       1      011 |
  4. |   001055   2018     1      1       1      111 |
     +-----------------------------------------------+

给TA打赏
共{{data.count}}人
人已打赏
未分类

接受用户输入的日期,并使用javascript计算日期之间的差异。

2022-9-9 4:46:20

未分类

使正方形透明的一部分-翩翩起舞

2022-9-9 4:46:22

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索