For loop 如何在stata中记录其他变量的属性
我必须生成变量For loop 如何在stata中记录其他变量的属性,for-loop,stata,For Loop,Stata,我必须生成变量entry\u 1、entry\u 2和entry\u 3,如果该特定月份的id\u I为entry=1,则这些变量将采用值1 例如 id month entry entry_1 entry_2 entry_3 1 1 1 1 0 0 1 2 0 0 0 0 1 3 0 0 1 1 1 4 0 0
entry\u 1
、entry\u 2
和entry\u 3
,如果该特定月份的id\u I
为entry=1
,则这些变量将采用值1
例如
id month entry entry_1 entry_2 entry_3
1 1 1 1 0 0
1 2 0 0 0 0
1 3 0 0 1 1
1 4 0 0 0 0
2 1 0 1 0 0
2 2 0 0 0 0
2 3 1 0 1 1
2 4 0 0 0 0
3 1 0 1 0 0
3 2 0 0 0 0
3 3 1 0 1 1
3 4 0 0 0 0
有没有人愿意提出一个如何实现循环的想法?
我在想这样的事情:
forvalues i=1(1)3 {
gen entry`i'=0
replace entry`i'=1 if on that particular month id=`i' had entry=1
}
您可以这样做(尽管您的数据与您提出的问题不太相符):
这将为forvalues循环中的每个i生成一个伪变量entry_i,如果id为i,entry为1,则entry_i=1,否则为0。代码可以简化为最多一个循环
clear
input id month entry entry_1 entry_2 entry_3
1 1 1 1 0 0
1 2 0 0 0 0
1 3 0 0 1 1
1 4 0 0 0 0
2 1 0 1 0 0
2 2 0 0 0 0
2 3 1 0 1 1
2 4 0 0 0 0
3 1 0 1 0 0
3 2 0 0 0 0
3 3 1 0 1 1
3 4 0 0 0 0
end
forval j = 1/4 {
egen entry`j' = total(entry & id == `j'), by(month)
}
list id month entry entry? , sepby(id)
+--------------------------------------------------------+
| id month entry entry1 entry2 entry3 entry4 |
|--------------------------------------------------------|
1. | 1 1 1 1 0 0 0 |
2. | 1 2 0 0 0 0 0 |
3. | 1 3 0 0 1 1 0 |
4. | 1 4 0 0 0 0 0 |
|--------------------------------------------------------|
5. | 2 1 0 1 0 0 0 |
6. | 2 2 0 0 0 0 0 |
7. | 2 3 1 0 1 1 0 |
8. | 2 4 0 0 0 0 0 |
|--------------------------------------------------------|
9. | 3 1 0 1 0 0 0 |
10. | 3 2 0 0 0 0 0 |
11. | 3 3 1 0 1 1 0 |
12. | 3 4 0 0 0 0 0 |
+--------------------------------------------------------+
你好谢谢你的回答。使用该代码,我获得了条目\u 1条目\u 2条目\u 3
100
00
00
00
00
00
00
01
00
00
00
00
01
00
00
但是我仍然需要获得更多的条目,例如,在条目\u 1的第1个月的id=2,尽管我认为我可以按月生成:egen sum\u条目\u 1=max谢谢!我不知道区别是什么,但很高兴你计算出了I=1/3{gen entry{code>I'=id=I'&entry==1}的值I=1/3{by month:egen sum\u entry{code>I'=max(entry{code>I')}再次感谢!
clear
input id month entry entry_1 entry_2 entry_3
1 1 1 1 0 0
1 2 0 0 0 0
1 3 0 0 1 1
1 4 0 0 0 0
2 1 0 1 0 0
2 2 0 0 0 0
2 3 1 0 1 1
2 4 0 0 0 0
3 1 0 1 0 0
3 2 0 0 0 0
3 3 1 0 1 1
3 4 0 0 0 0
end
forval j = 1/4 {
egen entry`j' = total(entry & id == `j'), by(month)
}
list id month entry entry? , sepby(id)
+--------------------------------------------------------+
| id month entry entry1 entry2 entry3 entry4 |
|--------------------------------------------------------|
1. | 1 1 1 1 0 0 0 |
2. | 1 2 0 0 0 0 0 |
3. | 1 3 0 0 1 1 0 |
4. | 1 4 0 0 0 0 0 |
|--------------------------------------------------------|
5. | 2 1 0 1 0 0 0 |
6. | 2 2 0 0 0 0 0 |
7. | 2 3 1 0 1 1 0 |
8. | 2 4 0 0 0 0 0 |
|--------------------------------------------------------|
9. | 3 1 0 1 0 0 0 |
10. | 3 2 0 0 0 0 0 |
11. | 3 3 1 0 1 1 0 |
12. | 3 4 0 0 0 0 0 |
+--------------------------------------------------------+