Dear all,
hope all is well. I have searched Statalist and other forums to find a solution to the below, but unsuccessfully. Perhaps you can help?
I would like to use "parallel" to do the following task:
After that I am:
We are talking about a correspondence of a firm A to another 15k firms (and doing this for all firms), therefore a large computation task!
I tried to use parallel append, but this seems only useful when opening files named file_A_B (where A and B are firms), but not to load and merge one on to another.
Any idea if this is possible? I am printing below the loop that I am running now (and which will take ages). In the loop I am creating and dropping a folder for each firm because running it for all firms jams the memory.
Many thanks in advance!
Best,
Casper
hope all is well. I have searched Statalist and other forums to find a solution to the below, but unsuccessfully. Perhaps you can help?
I would like to use "parallel" to do the following task:
- Load and merge file A on file B
- Do some computations
- Save as file_A_B.dta
After that I am:
- Appending all obs for firm A, B etc.
We are talking about a correspondence of a firm A to another 15k firms (and doing this for all firms), therefore a large computation task!
I tried to use parallel append, but this seems only useful when opening files named file_A_B (where A and B are firms), but not to load and merge one on to another.
Any idea if this is possible? I am printing below the loop that I am running now (and which will take ages). In the loop I am creating and dropping a folder for each firm because running it for all firms jams the memory.
Code:
forvalues i=1/14065 { /*this loop matches and compares each category between firm i and firm j, and creates object T, which indicates a match*/
mkdir "Firmactivities/Technology/firm`i'/"
forvalues v=1/14065 {
use "Firmactivities/Technology/Baseline/firm`i'.dta", clear
merge Cat using "Firmactivities/Technology/Baseline/firm`v'.dta"
drop _merge
gen match = 1 if WIPO`i' == WIPO`v' & !missing(WIPO`i')
drop WIPO* Cat
gen id = _n
egen max = max(id)
egen sum_m = sum(match)
gen T = sum_m/max
drop match id max sum_m
capture noisily rename ID`i' ID_1
capture noisily rename ID`v' ID_2
capture noisily gen ID_2 = "X"
duplicates drop
save "Firmactivities/Technology/firm`i'/firm`i'_`v'.dta", replace
}
use "Firmactivities/Technology/firm`i'/firm`i'_1.dta", clear
save "Firmactivities/T/FirmT`i'.dta", replace
/*this loop appends all object T's for a particular firm i and firm j*/
forvalues v=2/14065 {
use "Firmactivities/T/FirmT`i'.dta", clear
append using "Firmactivities/Technology/firm`i'/firm`i'_`v'.dta", force
save "Firmactivities/T/FirmT`i'.dta", replace
}
drop if missing(ID_2)
order ID_1 ID_2 T
sort ID_1 ID_2
save "Firmactivities/T/FirmT`i'.dta", replace
shell rmdir "Firmactivities/Technology/firm`i'/" /s /q
}
use "Firmactivities/T/FirmT1.dta", clear
save "Firmactivities/FirmT.dta", replace
forvalues i=2/14065 {/*this loop puts together all corresponding files*/
use "Firmactivities/FirmT.dta", clear
append using "Firmactivities/T/FirmT`i'.dta", force
save "Firmactivities/FirmT.dta", replace
}
Many thanks in advance!
Best,
Casper
