How to index the individual ID for a panel data

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

aptech

1,773

Your Answer

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

You must login to post answers.

Have a Specific Question?

Get a real answer from a real person

Need Support?

Get help from our friendly experts.