Hi guys, I am new to Gauss, now i am dealing with a panel data, including 19000 observations and 6000 individuals, which means for each individual, I might have several observations for her. In this case, how can I index each individual from 1 to 6000? Hope I can get an answer here.
1 Answer
0
You can use the GAUSS selif (select if) command to select rows that meet a specific criteria. For example:
//Column 1 is member index
//Column 2 is variable 1
//Column 3 is variable 2
x = { 4 -1.18 0,
2 0.667 1,
4 0.768 1,
2 0.607 0,
3 0.0892 0,
3 -0.774 0,
2 -1.79 0,
2 0.483 0,
4 0.817 0,
4 -0.277 1 };
//Assign all observations from the
//individual with id == 4 to 'individual_4'
individual_4 = selif(x, x[.,1] .== 4);
print individual_4;
will return:
4.0000000 -1.1800000 0.0000000 4.0000000 0.76800000 1.0000000 4.0000000 0.81700000 0.0000000 4.0000000 -0.27700000 1.0000000
You can use the indexcat command to return just the row number of the observations meeting a criteria. For example:
//Column 1 is member index
//Column 2 is variable 1
//Column 3 is variable 2
x = { 4 -1.18 0,
2 0.667 1,
4 0.768 1,
2 0.607 0,
3 0.0892 0,
3 -0.774 0,
2 -1.79 0,
2 0.483 0,
4 0.817 0,
4 -0.277 1 };
//Return indices of locations
//where first column of 'x'
//is equal to 4
idx_4 = indexcat(x[.,1], 4);
print idx_4;
will return:
1.0000000 3.0000000 9.0000000 10.000000
Alternatively, you can use the GAUSS function, delif (delete if) to return every observation that does NOT meet a certain criteria (the opposite of selif. For example:
//Column 1 is member index
//Column 2 is variable 1
//Column 3 is variable 2
x = { 4 -1.18 0,
2 0.667 1,
4 0.768 1,
2 0.607 0,
3 0.0892 0,
3 -0.774 0,
2 -1.79 0,
2 0.483 0,
4 0.817 0,
4 -0.277 1 };
//Assign all observations from the
//individual with id != 4 to 'not_4'
not_4 = delif(x, x[.,1] .== 4);
print not_4;
will return:
2.0000000 0.66700000 1.0000000 2.0000000 0.60700000 0.0000000 3.0000000 0.089200000 0.0000000 3.0000000 -0.77400000 0.0000000 2.0000000 -1.7900000 0.0000000 2.0000000 0.48300000 0.0000000
Your Answer
1 Answer
You can use the GAUSS selif (select if) command to select rows that meet a specific criteria. For example:
//Column 1 is member index
//Column 2 is variable 1
//Column 3 is variable 2
x = { 4 -1.18 0,
2 0.667 1,
4 0.768 1,
2 0.607 0,
3 0.0892 0,
3 -0.774 0,
2 -1.79 0,
2 0.483 0,
4 0.817 0,
4 -0.277 1 };
//Assign all observations from the
//individual with id == 4 to 'individual_4'
individual_4 = selif(x, x[.,1] .== 4);
print individual_4;
will return:
4.0000000 -1.1800000 0.0000000 4.0000000 0.76800000 1.0000000 4.0000000 0.81700000 0.0000000 4.0000000 -0.27700000 1.0000000
You can use the indexcat command to return just the row number of the observations meeting a criteria. For example:
//Column 1 is member index
//Column 2 is variable 1
//Column 3 is variable 2
x = { 4 -1.18 0,
2 0.667 1,
4 0.768 1,
2 0.607 0,
3 0.0892 0,
3 -0.774 0,
2 -1.79 0,
2 0.483 0,
4 0.817 0,
4 -0.277 1 };
//Return indices of locations
//where first column of 'x'
//is equal to 4
idx_4 = indexcat(x[.,1], 4);
print idx_4;
will return:
1.0000000 3.0000000 9.0000000 10.000000
Alternatively, you can use the GAUSS function, delif (delete if) to return every observation that does NOT meet a certain criteria (the opposite of selif. For example:
//Column 1 is member index
//Column 2 is variable 1
//Column 3 is variable 2
x = { 4 -1.18 0,
2 0.667 1,
4 0.768 1,
2 0.607 0,
3 0.0892 0,
3 -0.774 0,
2 -1.79 0,
2 0.483 0,
4 0.817 0,
4 -0.277 1 };
//Assign all observations from the
//individual with id != 4 to 'not_4'
not_4 = delif(x, x[.,1] .== 4);
print not_4;
will return:
2.0000000 0.66700000 1.0000000 2.0000000 0.60700000 0.0000000 3.0000000 0.089200000 0.0000000 3.0000000 -0.77400000 0.0000000 2.0000000 -1.7900000 0.0000000 2.0000000 0.48300000 0.0000000