比如我有如下形式的data,
变量名有:
type groupid num1 num2 name
我想根据groupid, 生成新的变量name1, name2, name3,
使得对于每一个循环组变量groupid,
如果type为A, 则组内的name1就取对应的name值;
如果type为B, 则组内的name2就取对应的name值(如果num2=1的话,name2就取缺失值);
如果type为C, 则组内的name3就取对应的name值(如果num2=2的话,name2就取缺失值);
非常感谢!
clear
set obs 20
gen type="A"
replace type="A" in 2
replace type="B" in 3
replace type="C" in 4
replace type="A" in 5
replace type="B" in 6
replace type="C" in 7
replace type="A" in 8
replace type="B" in 9
replace type="A" in 10
replace type="B" in 11
replace type="A" in 12
replace type="B" in 13
replace type="C" in 14
replace type="A" in 15
replace type="A" in 16
replace type="B" in 17
replace type="C" in 18
replace type="A" in 19
replace type="B" in 20
gen groupid=1
replace groupid=2 in 2/4
replace groupid=3 in 5/7
replace groupid=4 in 8/9
replace groupid=5 in 10/11
replace groupid=6 in 12/14
replace groupid=7 in 15
replace groupid=8 in 16/18
replace groupid=9 in 19/20
by groupid, sort: gen num1 = _n
by groupid, sort: gen num2 = _N
也就是说我希望得到的name1,name2,name3是如下形式的数据(结合上面的命令)。
gen name1="name.1"
replace name1="name.2" in 2/4
replace name1="name.5" in 5/7
replace name1="name.8" in 8/9
replace name1="name.10" in 10/11
replace name1="name.12" in 12/14
replace name1="name.15" in 15
replace name1="name.16" in 16/18
replace name1="name.19" in 19/20
gen name2="."
replace name2="name.3" in 2/4
replace name2="name.6" in 5/7
replace name2="name.9" in 8/9
replace name2="name.11" in 10/11
replace name2="name.13" in 12/14
replace name2="name.17" in 16/18
replace name2="name.20" in 19/20
gen name3="."
replace name3="name.4" in 2/4
replace name3="name.7" in 5/7
replace name3="name.14" in 12/14
replace name3="name.18" in 16/18