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.