動物のタグ ID (1,2,3)、タイプ (A,B)、および各「食事」で与えられる飼料の量 (kg) で構成される、3 匹の動物の給餌データを含むデータセットがあります。
Animal FeedType Amount(kg)
Animal1 A 10
Animal2 B 7
Animal3 A 4
Animal2 A 2
Animal1 B 5
Animal2 B 6
Animal3 A 2
unique('Animal')
これを使用して、行、unique('FeedType')
列、およびマトリックスの対応するセルに累積飼料量 (kg)を持つ以下のマトリックスを出力できるようにしたいと考えています。
A B
Animal1 10 5
Animal2 2 13
Animal3 6 0
以下のように、2 つの for ループを使用してソリューションのコーディングを開始しました。
dataframe = read_delim(input_url, header=TRUE, sep = ";")
animal_feed_matrix = matrix(0,nrow(unique('Animal')),nrow(unique('FeedType')))
for (i in 1:length(unique('Animal')) ){
a= unique('Animal')[i]
for (j in 1:length(unique('FeedType')) ){
ft= unique('FeedType')[j]
animal_feed_matrix[i,j] = sum(dataframe [(dataframe ['Animal']==a & dataframe ['FeedType']==ft),'Amount(kg)'])
}
}
しかし、これが問題に取り組むには非常に非効率的な方法であることは承知しています (さらに、動作させるには上記のコードを完成させる必要があります)。R にはlevelとfactorがあり、問題をよりエレガントに解決できると感じています。
PS: この質問は私のものと多少似ていますが、私の問題の解決策が含まれていたとしても、それは私を逃れます。