【发布时间】:2020-04-12 12:35:07
【问题描述】:
有没有一种有效的方法可以从 R 中的数据框中获取一些顶级组? 例如:
exampleDf <- data.frame(
subchar = c("facebook", "twitter", "snapchat", "male", "female", "18", "20"),
superchar = c("social media", "social media", "social media", "gender", "gender", "age", "age"),
cweight = c(.2, .4, .4, .7, .3, .8, .6),
groupWeight = c(10, 10, 10, 20, 20, 70, 70)
)
因此,使用 dplyr 我可以将它们分组并按组权重排序:
sortedDf <- exampleDf %>%
group_by(superchar) %>%
arrange(desc(groupWeight))
但是在这种情况下,是否可以选择“顶级”组,例如年龄和性别?有点像 slice() dplyr 函数,但针对整个组而不是组内的行。
【问题讨论】:
-
“顶级群体”到底是什么意思?
-
这似乎是一个奇怪的例子,因为
groupWeight在组中是唯一的,但它不是组 id,所以组并不重要。在这种情况下,我会做exampleDf %>% filter(groupWeight %in% sort(unique(groupWeight), decreasing = TRUE)[1:2])。更有趣的情况是如果groupWeight在组内变化,但您需要指定要使用groupWeight的汇总函数(平均值、中值、最大值等)。而且可能最好的方法是exampleDf %>% group_by %>% summarize %>% top_n %>% left_join(exampleDf)回到原始数据。 -
@heds1 抱歉应该澄清一下,在这种情况下,它将是 groupWeight 最高的组。所以这里的排名是年龄第一,然后是性别,社交媒体最低。