添付の data.table では、AF2 列の 5 年間の加重平均を計算しようとしています。AF2 は、以下に基づくデータセット内の他の列の関数です。
Region Country Group Item Year Dom.Supply Feed Seed
NAm.Oceania Australia Cereals Wheat 1961 1727 111 421
NAm.Oceania Australia Cereals Wheat 1962 1807 123 420
NAm.Oceania Australia Cereals Wheat 1963 1933 166 452
NAm.Oceania Australia Cereals Wheat 1964 1939 182 444
NAm.Oceania Australia Cereals Wheat 1965 2016 250 519
NAm.Oceania Australia Cereals Rye 1961 768 NA 174
NAm.Oceania Australia Cereals Rye 1962 840 NA 170
NAm.Oceania Australia Cereals Rye 1963 615 NA 181
NAm.Oceania Australia Cereals Rye 1964 980 NA 109
NAm.Oceania Australia Cereals Rye 1965 918 NA 190
NAm.Oceania Canada Cereals Wheat 1961 3736 1195 1027
NAm.Oceania Canada Cereals Wheat 1962 3835 1208 1064
NAm.Oceania Canada Cereals Wheat 1963 4301 1462 1145
NAm.Oceania Canada Cereals Wheat 1964 3842 1262 1089
NAm.Oceania Canada Cereals Wheat 1965 4323 1356 1140
NAm.Oceania Canada Cereals Rye 1961 133 72 15
NAm.Oceania Canada Cereals Rye 1962 126 61 20
NAm.Oceania Canada Cereals Rye 1963 163 103 18
NAm.Oceania Canada Cereals Rye 1964 125 64 20
NAm.Oceania Canada Cereals Rye 1965 283 201 20
data$AF2 <- 1-((data$Feed + data$Seed) / data$Dom.Supply)
これにより、行 6 ~ 10 の NA 値が得られます。
次のコード (以前の質問の結果として提供されたもの) は、「NaN」を返します。これは、NA 値のために意味があります。
data2 <- data[, list(
AF2.WA=sum(Dom.Supply*AF2)/sum(Dom.Supply)),
by=Year]
次のように NA を削除するように変更すると、エラー メッセージが表示されます (colMeans(data2[, -1, with = F], na.rm = T) のエラー: 'x' は数値でなければなりません)
data2 <- data[, list(
AF2.WA=sum(Dom.Supply*AF2)/sum(Dom.Supply), na.rm=T),
by=Year]
目的の出力は次のコードです (最終的には、すべての地域とグループの表形式になります)。
colMeans(data2[,-1, with=F], na.rm=T)
require(plotrix)
std.error(data2[, -1, with=F])
グループ「Cereals」の合計加重平均を計算するために、AF2 の値が NA である行のみを R に無視させるにはどうすればよいですか? 最終的に、これはループで実行され、他の 7 つのグループと他の 7 つの地域にわたる AF2 の加重平均が計算されます。
ありがとう!