Upfrontの謝罪これが尋ねられた場合、私は一日中検索しており、私の問題に適用できる回答は見つかりませんでした。dplyrを使用してグループ化し、繰り返しフィルタでまとめます
私の以前の方法(forループ)があまりにも非効率であったため、dplyr(とco。)を使用してこの問題を解決しようとしています。私は、グループ内のサイトで、イベント時間のデータセットを持っています。シーケンスに沿って移動するウィンドウ内で発生するイベントの数(および割合)を要約したいと思います。
# Example data
set.seed(1)
sites = rep(letters[1:10],10)
groups = c('red','blue','green','yellow')
times = round(runif(length(sites),1,100))
timePeriod = seq(1,100)
# Example dataframe
df = data.frame(site = sites,
group = rep(groups,length(sites)/length(groups)),
time = times)
これは、所与の移動ウィンドウ内で時間(イベント)を含む各グループからのサイトの数を要約する試みです。 目的は、ベクトルtimePeriod
の各要素を移動し、各グループ内で発生したイベントの数をtimePeriod[i] +/- half-window
で要約することです。最終的にそれらを、例えば各グループのための列と各時間ステップの行とを有するデータフレームに格納することが理想的である。
df %>%
filter(time > timePeriod[i]-25 & time < timePeriod[i]+25) %>%
group_by(group) %>%
summarise(count = n())
どのように私の時間シーケンスをループせずに、個々のグループごとにサマリーテーブルを保存することができますか?ありがとう!
大変、ありがとう@Juan Bosco!適用ファミリの実装方法、偉大な例をまだ学習しています。 –