If I understand this correctly, you want
forval i = 1/2138 {
bysort id (asc`i') : replace asc`i' = asc`i'[_N]
}
by id : keep if _n == _N
Your original loop isn't executable code, and I don't understand it as pseudocode, but (again if I understand you correctly) you don't need a loop for that part anyway.
Nick
[email protected]
Nikhil Jha
I have a question related to data management. I have a fairly large
data set in the following format:
id asc1 asc2 asc3........
___________________________________
1 1 0 0
1 0 1 0
---------------------------------
2 0 1 0
2 1 0 0
2 0 0 1
----------------------------------
:
:
where id is the identifier and asc1, asc2, etc are associations
related to specific ids.
I would like to put it in this format eventually.
id asc1 asc2 asc3........
___________________________________
1 1 1 0
2 1 1 1
:
:
My plan was to use reshape wide for which I needed it to first look like this:
id asc1 asc2 asc3........
___________________________________
1 1 1 0
1 1 1 0
---------------------------------
2 1 1 1
2 1 1 1
2 1 1 1
----------------------------------
:
:
That is if ever a particular id is associated with any asc, that
column is 1 for all occurrence of that particular id.
This could probably be done with.....
bysort id : g byte assc1 = sum(asc1)
or
collapse (sum) asc1-asc2138 , by (id)
But my problem is that there are 2138 asc (i.e. last var is asc2138)
[and not enough memory (see below) for collapse], so I want to
automate this. So I tried to do a loop like:
egen same = group(id)
forvalues i =1/_N{
local j = 1
while `j'=same{
g ascc`j' =1
continue
local j = `j'+1
}
}
But this just doesn't work - invalid syntax (using Stata 10). Any
pointers (either for fixing this loop or the original problem) would
be greatly appreciated.
*
* 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/