如何在 R 中排除 group_by 中的值
Posted
技术标签:
【中文标题】如何在 R 中排除 group_by 中的值【英文标题】:How to exclude values in group_by in R 【发布时间】:2021-12-24 04:40:11 【问题描述】:我正在尝试对变量进行分组 v_435 (1, 2, 3, 4, 5, 98, 99) 从数据集 ARR2 到 v_435_low(包括变量 1 和 2) 和 v_435_high(包括变量 4 和 5)。
很遗憾,我不知道如何为 v_435_high 排除 98 和 99。
我的代码:
# v_435_low
ARR2%>%
group_by(v_435<=2) %>%
summarize(n=n())%>%
mutate(freq = n / sum(n) )
# v_435_high
ARR2%>%
group_by(**????????????**) %>%
summarize(n=n())%>%
mutate(freq = n / sum(n) )
【问题讨论】:
在我看来,创建一个为您进行分组的新变量(使用您概述的标准)会更容易,然后在该新变量上使用group_by
。这对您来说是一种合理的方法吗?
3 落在哪里?你说 1-2 -> 低,4-5 -> 高。 3 呢?
感谢您的快速回答。不幸的是,我是一个初学者,所以我什至不确定如何使用概述的标准创建一个变量。 3会因为理论上的原因被踢出去。但是我找不到不选择 98 和 99 来为变量选择 4 和 5 的方法。
你好@martis。欢迎来到 SO!请提供minimal reproducible example,以便其他 SO 用户可以为您提供最佳帮助。谢谢。
【参考方案1】:
更新group_by
行以仅包含 4 和 5:
library(tidyverse)
# simulating some of my own data
ARR2 <- tibble(
v_435 = sample(c(1:5, 98, 99), size = 100, replace = TRUE)
)
ARR2 %>%
group_by(v_435 %in% c(4, 5))
【讨论】:
感谢您的帮助!假设我想保留在 tidyverse 管道逻辑中,因为我想将 v_435 的 1+2 答案(低)和 4+5 答案(高)分组,然后继续计算:有没有办法将这两个值分别分组为使用 group_by() 变量?热烈的问候 我提供的答案已经在 tidyverse 管道逻辑中。mutate
行创建了一个名为v_435_groups
的新变量,然后您可以随心所欲地使用它。我不确定您是否完全掌握 group_by
的作用,这并不意味着将值合并到一个组中。
如果您真的只是想从您的问题中寻找group_by
中的内容,那么您正在寻找group_by(v_435 %in% c(4, 5))
非常感谢,这正是我想要的! :)
好吧,很公平。我更新了我的答案以反映你在寻找什么。以上是关于如何在 R 中排除 group_by 中的值的主要内容,如果未能解决你的问题,请参考以下文章
在 R 中使用 dplyr 在 group_by 之后应用自定义函数
在 R 中,如何根据一列的值对所有其他列求和,而不指定列名?
如何使用 R 和 dplyr 中连续的元素执行 group_by