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]]

______________________________________________
R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.

Reply via email to