グループ化された集計変数を対応する識別変数のリストと共に出力しようとしています。dplyrでカスタムインデックスを要約して一覧表示します
例として、データセットを使用して、別の出力列の各一致に対応する名前のベクトルをジェンダー別にグループ化した「明るい」肌色の文字数を計算したいと思います。実世界のユースケースで
、そこsummarise
に複数の条件となり、ユニークな識別子がsubjectID
/studyID
は/ etcである可能性があります。私はdata.table
ソリューションにオープンしています、ベクトルベースのソリューションを好む、Shinyフレンドリーで、簡単に関数に変換されます。 dplyr::starwars
から
例:
starwars %>%
filter(species %in% c("Human", "Droid")) %>%
group_by(gender) %>%
summarise(
skin = sum(skin_color=="light", na.rm=T),
hair = sum(hair_color=="brown", na.rm=T)
)
所望の出力:
gender skin hair skinname hairname
female 6 6 femname1, femname2, femname3, femname4, femname5, femname6 femhname1, femhname2, femhname3, femhname4, femhname5, femhname6
male 5 8 mname1, mname2, mname3, mname4, mname5 mhname1, mhname2, mhname3, mhname4, mhname5, mhname6, mhname7 mhname8
none 0 0
<NA> 0 0
この出力は、その後t()
を使用して転置されると(DT
に一致する名前のホバーオーバー表示を作成するために、paste()
を使用しますDataTables)。
私はsummarise
/mutate
でdo.call
とsummarise
ステップで
skinname = as.list(.$name[which(skin_color == "light")])
のようなもの、あるいはおそらくカスタム関数を必要と考えています。
ありがとうございました。私は、目的が複数の条件のカウントのグループ化されたサマリーテーブルを作成することであることを言及しておきます。その結果、 'skin_color == light'を' filter() 'ステップに動かすことはできません。私は明確にするために質問を編集します。 –
次に、フィルタリングの代わりにグループ化する必要があるように聞こえます。 – alistaire
あなたの最後の選択肢は、私が探している解決策、ありがとうと思います。 –