蓝色 发表于 2019-8-7 18:46 
学习这个链接,下载dataex命令,用dataex命令提取你的前2行数据,贴到网上,这样便于其他人,直接用数据尝试 ...
啊多谢,学习了!
以下是我的1/3数据格式
clear
input long caseid str101 startyear int(endyear primarysender) str3 primarysender_abb int sender1 str3 sender1_abb int sender2 str3 sender2_abb int targetstate str3 targetstate_abb
1945121601 "1946" 1947   2 "USA"   2 "USA"   . ""    710 "CHN"
1946020801 "1946" 1949 365 "RUS" 365 "RUS"   . ""    305 "AUS"
1946031101 "1946" 1993 750 "IND" 750 "IND" 770 "PAK" 560 "SAF"
end
没有想出reshape要怎么写,希望帮忙看一下
大体上就是要把他变形为帖子刚开始的形式。
除此之外数据有一个bug【primarysender可能不是sender1、sender2两者之间的一个,它可能没有值(“.”)或者是一个其他的国家或机构组织】,也就是说reshape或许不能直接用,因为这样一来就不是对所有的observation直接reshape,对primarysender和sender1或2相同的observation就可以不用管primarysender的取值。
举例说明即为:
| id | start | end 
 | primary_country | Name1 | country2 | Name2 | country3 | Name3 | Target | 
| 1 | 2002 | 2005 | PRK | North Korea | PRK | North Korea | UK | United Kingdom | Thailand | 
| 2 | 2001 | 2004 | US | United States of America | CHN | China | PRK | North Korea | Japan | 
id1希望变形为
| id | start | end | country | name | target | 
| 1 | 2002 | 2005 | PRK | North Korea | Thailand | 
| 1 | 2002 | 2005 | UK | United Kingdom | Thailand | 
|  |  |  |  |  |  | 
目前我是通过if condition还有forloop做了好多行出了想要的结果,感觉十分没有效率。希望各位stata友人赐教,不胜感谢!