我正在尝试使用相应的识别变量列表输出分组汇总变量。
以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()
,并用于在(DataTables)paste()
中创建匹配名称的悬停显示。DT
我想我需要类似的东西
skinname = as.list(.$name[which(skin_color == "light")])
在summarise
步骤中,或者可能是带有do.call
in summarise
/的自定义函数mutate
。