Ich arbeite mit einer FAO-Datenbank der landwirtschaftlichen Pflanzenproduktion nach Land. Insbesondere habe ich eine Datentabelle Reisproduktion von Jahr aus jedem Land der Welt im Jahr 1961 bis 2014 hier eine vereinfachte Version meiner Daten beginnt, zeigt:R - Bedingte mathematische Ausdruck in Datentabelle
d <- data.table(structure(list(Year = c(1961, 1962, 1963, 1964, 1965, 1966, 1967,
1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978,
1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989,
1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000,
2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011,
2012, 2013, 2014, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968,
1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979,
1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990,
1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001,
2002, 2003, 2004, 2005, 2006), Country = c("Afghanistan", "Afghanistan",
"Afghanistan", "Afghanistan", "Afghanistan", "Afghanistan", "Afghanistan",
"Afghanistan", "Afghanistan", "Afghanistan", "Afghanistan", "Afghanistan",
"Afghanistan", "Afghanistan", "Afghanistan", "Afghanistan", "Afghanistan",
"Afghanistan", "Afghanistan", "Afghanistan", "Afghanistan", "Afghanistan",
"Afghanistan", "Afghanistan", "Afghanistan", "Afghanistan", "Afghanistan",
"Afghanistan", "Afghanistan", "Afghanistan", "Afghanistan", "Afghanistan",
"Afghanistan", "Afghanistan", "Afghanistan", "Afghanistan", "Afghanistan",
"Afghanistan", "Afghanistan", "Afghanistan", "Afghanistan", "Afghanistan",
"Afghanistan", "Afghanistan", "Afghanistan", "Afghanistan", "Afghanistan",
"Afghanistan", "Afghanistan", "Afghanistan", "Afghanistan", "Afghanistan",
"Afghanistan", "Afghanistan", "Albania", "Albania", "Albania",
"Albania", "Albania", "Albania", "Albania", "Albania", "Albania",
"Albania", "Albania", "Albania", "Albania", "Albania", "Albania",
"Albania", "Albania", "Albania", "Albania", "Albania", "Albania",
"Albania", "Albania", "Albania", "Albania", "Albania", "Albania",
"Albania", "Albania", "Albania", "Albania", "Albania", "Albania",
"Albania", "Albania", "Albania", "Albania", "Albania", "Albania",
"Albania", "Albania", "Albania", "Albania", "Albania", "Albania",
"Albania"), totalprod = c(319000, 319000, 319000, 380000, 380000,
337000, 396000, 402000, 407000, 366000, 350000, 4e+05, 420000,
420000, 435000, 448000, 4e+05, 428000, 439000, 415000, 390000,
364000, 350000, 334000, 317000, 336000, 324000, 343000, 320000,
333000, 335000, 3e+05, 3e+05, 342000, 390000, 340000, 4e+05,
450000, 280000, 260000, 242000, 388000, 434000, 463000, 485000,
540000, 552000, 612000, 645000, 672000, 672000, 5e+05, 512094,
537000, 4603, 5683, 9135, 8173, 10225, 10524, 11254, 12807, 14276,
14924, 10760, 12000, 15168, 12000, 13500, 14000, 14400, 14800,
15520, 13000, 13900, 11900, 13000, 12600, 12000, 11000, 10600,
8830, 8450, 7000, 2283, 960, 585, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0)), .Names = c("Year", "Country", "totalprod"), class = "data.frame", row.names = c(NA,
-100L)))
Ich brauche diese Datentabelle in zwei verschiedenen zusammenfassen Möglichkeiten:
a) Zuerst muss ich die globale Reisproduktion pro Jahr berechnen, indem ich die Produktion jedes Landes pro Jahr aggregiere. Ich schaffte es, dies zu beantworten, indem Sie:
d.global.year <- d[, list(totalprodyear=sum(totalprod)), by=Year]
b) Sobald ich die globale Reisproduktion pro Jahr habe, ich brauche jedes Land Beitrag pro Jahr zu bestimmen. Dies würde dadurch erreicht, dass die Produktion jedes Landes jährlich auf die globale Reisproduktion aufgeteilt wird.
Allerdings versuche ich immer noch, einen Weg zu lösen b).
EDITED: Erwartete Ausgabe:
ist zum Beispiel Lassen Sie nehmen der weltweite Reisverbrauch für 1961: 323.603
In diesem Fall Afghanistan Beitrag würde 319000/323603 = 0,986 und Albanien sein würde 4603/323603 = 0.014
Irgendwelche Tipps?
Länder scheinen nicht mehrere Einträge pro Jahr zu haben, so dass Sie die Summe im zweiten Schritt nicht benötigen würden. 'd [,. (Land, frac = totalprod/sum (totalprod)), bis = Jahr]' oder so. Ich schätze auch, dass Sie zwischen den ersten beiden Zeilen ein bisschen früh dran sind. – Frank
Das funktioniert, danke. – thiagoveloso
@Frank Ich habe die Daten nicht genau untersucht. Versucht, einen sichereren Weg zur Lösung des Problems vorzuschlagen, falls es mehrere Datensätze für das Land gibt. – Psidom