Thanks for the explanation. You might find the discussion in
SJ-9-1 pr0046 . . . . . . . . . . . . . . . . . . . Speaking Stata:
> Rowwise
(help rowsort, rowranks if installed) . . . . . . . . . . . N
> . J. Cox
Q1/09 SJ 9(1):137--157
shows how to exploit functions, egen functions, and Mata
for working rowwise; rowsort and rowranks are introduced
of use or interest, at least for related problems.
Nick
[email protected]
Sabrina Carrossa
My object is to find the best friend among a list of friends.
I have a list of "i" occupation (in the db they are 20, in the
example just 3). For each occupation in the db I have the variables:
- d31b_i : do you have a friend that have the occupation "i"? (yes/no)
- d31c_i: how many time do you spend with this person in the
occupation "i"? (0/6, with 6 a lot of time)
- d31d_i: how do you feel close with this person in the occupation
"i"? (0/10, with 10 really close)
Than, my idea is that the best friend is a friend with:
- d31b_i=1
- d31c_i= max (among each i)
- d31d_i=max (among each i)
And, if I have more friends with the same value for these three vars,
the best friend is the friend with higher occupation (max i)
************************************************
* Stata Code:
************************************************
* compute n vars as sum of the information on d31b d31c d31d and
occupation (i)
forval i=1/3 {
gen d31_`i'=0
replace d31_`i'= (d31b_`i'*100000) + (d31c_`i'*10000) +
(d31d_`i'*100) + `i'
}
* in the first step i assign to friend the value of the friend in the
first occupation (i=1)
* than i compare the value of this first friend with the values of the
other friends
* if the values of the other friends are highest (more contact and
more closeness) I replace the value of friend
gen friend=d31_1
gen f=1
forval y=2/3 {
replace f=`y' if confront<d31_`y'
replace friend= d31_`y' if confront<d31_`y'
}
*
* For searches and help try:
* http://www.stata.com/help.cgi?search
* http://www.stata.com/support/statalist/faq
* http://www.ats.ucla.edu/stat/stata/