【发布时间】:2021-05-05 12:09:30
【问题描述】:
我有一个带有id 变量的data.frame(或tiibble 或其他)。我经常用dplyr::group_by为这个id做一些操作,所以
data %>%
group_by(id) %>%
summarise/mutate/...()
通常,对于每个id,我都有其他唯一的非数字变量,例如id 所属的project 或country 以及id 的其他特征(例如性别, 等等。)。当我使用上面的summarise 函数时,除非我指定,否则这些其他变量都会丢失
data %>%
group_by(id) %>%
summarise(across(c(project, country, gender, ...), unique),...)
或
data %>%
group_by(id, project, country, gender, ...) %>%
summarise()
是否有一些函数可以检测这些变量,这些变量对于每个 id 都是唯一的,因此不必指定它们?
谢谢!
PS:我主要是问dplyr和group_by相关的功能,但是其他环境比如R-base或者data.table也可以。
【问题讨论】:
-
您是否考虑过
ungroup()-ing 数据,或迭代您想要分组的变量,例如map()? -
恐怕答案是否定的,没有自动检测此类变量。您已经拥有的解决方案就是要走的路。 1) 在
group_by中提及它们,2) 使用across+unique3) 使用across+first将它们保留在数据中。 -
想查看答案吗?
-
@mnist 我已经看到了答案。谢谢你的。
-
是否希望提供任何形式的反馈,例如评论/赞成/接受?
标签: r dplyr group-by tidyverse