私は、農業作物生産のFAOデータベースを国ごとに取り組んでいます。私は2つの異なる中で、このデータテーブルを要約する必要がR - データテーブルの条件付き数式表現
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)))
:具体的には、私は私のデータの簡易版をここで2014年まで、1961年に始まる世界各国から年間で米の生産を示すデータテーブルをされてい方法:
a)まず、各国の生産量を1年ごとに集計して、1年あたりの世界の米生産量を計算する必要があります。
d.global.year <- d[, list(totalprodyear=sum(totalprod)), by=Year]
b)1年にグローバルな米生産が始まったら、各国の年間貢献度を決定する必要があります。これは、各国の生産量を世界の米生産量で除することによって、毎年行われる。
しかし、私はまだb)を解決する方法を見つけようとしています。
EDITED: 予想される出力:
はのは、1961年のグローバルコメ消費たとえばみましょう。その場合は323603
は、アフガニスタンの寄与は323603分の319000 = 0.986だろうとアルバニアのは323603分の4603になります= 0.014
ヒント?
国は、年ごとに複数のエントリを持っていないようです。 'd [、(国、frac = totalprod/sum(totalprod))、by = Year]'か何か。また、最初の2行の間にちょっと早めに改行していると思います。 – Frank
それは、ありがとう、働く。 – thiagoveloso
@Frank私は非常に慎重にデータを見ていませんでした。国に複数の記録がある場合に備えて、問題に取り組むより安全な方法を提案しようとしました。 – Psidom