[R] organizing data in a matrix avoiding loop
A M Lavezzi
mario.lavezzi at unipa.it
Fri May 26 13:46:52 CEST 2017
Dear R-Users
I have data on bilateral trade flows among countries in the following form:
> head(dataTrade)
iso_o iso_d year FLOW
1 ABW AFG 1985 NA
2 ABW AFG 1986 NA
3 ABW AFG 1987 NA
4 ABW AFG 1988 NA
5 ABW AFG 1989 NA
6 ABW AFG 1990 NA
where:
iso_o: code of country of origin
iso_d: code of country of destination
year: 1985:2015
FLOW: amount of trade (values are "NA", 0s, or positive numbers)
I have 215 countries. I would like to create a 215x215 matrix , say M, in
which element M(i,j) is the total trade between countries i and j between
1985 and 2015 (i.e. the sum of annual amounts of trade).
After collecting the country codes in a variable named "my_iso", I can
obtain M in a straightforward way using a loop such as:
for (i in my_iso){
for(j in my_iso)
if(i!=j){
M[seq(1:length(my_iso))[my_iso==i],seq(1:length(my_iso))[my_iso==j]]
<-
sum(dataTrade[dataTrade$iso_o==i &
dataTrade$iso_d==j,"FLOW"],na.rm=TRUE)
}
}
However, it takes ages.
Is there a way to avoid these loops?
Thanks for your help
Mario
--
Andrea Mario Lavezzi
DiGi,Sezione Diritto e Società
Università di Palermo
Piazza Bologni 8
90134 Palermo, Italy
tel. ++39 091 23892208
fax ++39 091 6111268
skype: lavezzimario
email: mario.lavezzi (at) unipa.it
web: http://www.unipa.it/~mario.lavezzi
[[alternative HTML version deleted]]
More information about the R-help
mailing list