私は鳥の行動について収集したデータを分析しており、海鳥が採餌ダイビング (魚を追いかけるために水面下に潜る) の合間に、ローフィング (さもなければ休んでいると見なされる) の間、水面にとどまっている時間を計算したいと考えています。データは現在この形式です。
structure(list(alt_id = c(10L, 10L, 12L, 12L, 12L, 12L, 13L,
13L, 13L, 13L, 13L, 13L, 13L, 13L, 13L, 13L, 2L, 2L, 2L, 2L),
act = c("l", "d", "l", "d", "l", "d", "l", "d", "l", "d",
"l", "d", "l", "d", "l", "d", "l", "d", "l", "d"), action_time = c("15",
"0", "5", "24", "10", "0", "43", "28", "16", "37", "9", "35",
"15", "34", "11", "0", "12", "33", "15", "33")), .Names = c("alt_id",
"act", "action_time"), row.names = c(NA, 20L), class = "data.frame")
このデータのサブセットには、4 人の異なる個人の行動情報が含まれています (一意の ID 番号でインデックス付けされています)。個々の鳥の行動のみを考慮するように、最初にデータフレームを評価する必要があります。これを行うには、検討している行のすぐ下の ID 番号が同じであることを確認する必要があります。次に、鳥が怠けている時間を分離する必要があります (データベースでは "l" で示されます)。次に、ローフィング期間の前後の両方で、それが (「d」で示されている) 潜んでいることを確認したいと考えています。これを行うことで、鳥が満腹になった後、一度に何時間もこれを行う可能性があるため、鳥がダイビングの合間にうろついているように水に浮かんでいるだけの時間を数えていないことを確認しています.
理想的には、これは for ループまたはその他の式で実行され、4,000 以上のデータ行すべてを一度に実行して、平均、sd などの計算に使用できるローフィング (l) 回のベクトルを作成できます。
これを達成するためのヒントはありますか?