我想輸出分組的摘要變量和相應的標識變量列表。總結並列出dplyr中的自定義索引
以dplyr::starwars
數據集爲例,我想根據性別來計算具有「輕」膚色的字符數,其中每個匹配的名稱向量位於單獨的輸出列中。
在現實世界的使用案例中,會有多個條件到summarise
,唯一標識符可能是subjectID
/studyID
/etc。我對data.table
解決方案持開放態度,喜歡基於矢量的解決方案,R 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()
可以tranposed和將使用paste()
在DT
創建匹配名稱的懸停顯示器(數據表)。
我想我需要在summarise
步驟summarise
/mutate
像
skinname = as.list(.$name[which(skin_color == "light")])
,或者可能是一個自定義函數與do.call
。
感謝你們,我應該提到,目標是創建多個條件計數的分組彙總表。因此,我認爲將'skin_color == light'移動到'filter()'步驟將不起作用。我將編輯這個問題來澄清。 –
然後它聽起來像你應該分組而不是過濾。 – alistaire
我相信你最後的選擇是我正在尋找的解決方案,謝謝。 –