Hi Mario, does acast from the reshape2 package help?
dfa<- data.frame(iso_o = letters[c(1, 1:4)], iso_d = letters[6:10], year = c(1985, 1985, 1986, 1987, 1988), flow = c(1,2,3,4, NA)) reshape2::acast(dfa, iso_o ~ iso_d, fun.aggregate = sum, value.var = "flow") HTH Ulrik On Fri, 26 May 2017 at 13:47 A M Lavezzi <mario.lave...@unipa.it> wrote: > 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 <+39%20091%202389%202208> > fax ++39 091 6111268 <+39%20091%20611%201268> > 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. [[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.