gpt4 book ai didi

r - 选择至少具有某一特定值之一的组

转载 作者:行者123 更新时间:2023-12-02 08:55:06 24 4
gpt4 key购买 nike

如何根据各行的条件选择组,例如保留包含至少一个(任意)特定值的所有组,例如4,(或至少一次为 TRUE 的任何其他条件)。或者反过来说:如果一个组有任何条件为 true 的行,则应删除整个组。

让我们看一个非常简单的数据,有两个组,我想选择至少有一行 Value 为 4 的组(即组 B 此处)

library(dplyr)
df <- data.frame(Group = LETTERS[c(1,1,1,2,2,2)], Value=c(1:5, 4))

df
# Group Value
# 1 A 1 # Group A has no values == 4 ~~> remove entire group
# 2 A 2
# 3 B 3
# 4 B 4 # Group B has at least one 4 ~~> keep the whole group

执行group_by(),然后执行filter(如 this post )将仅选择包含值 4 的单个行,而不是整个/em> 组:

df %>%
group_by(Group) %>%
filter(Value == 4)
# Group Value
# <fctr> <int>
# 1 B 4

最佳答案

事实证明这非常简单:您只需在 filter 调用中使用 any() 函数即可。事实上,看起来:

  • filter(any(...))group_by() 级别进行计算,

  • filter(...)rowwise() 级别进行计算,即使前面有 group_by() 也是如此。

因此使用:

 df %>%
group_by(Group) %>%
filter(any(Value==4))

Group Value
<fctr> <int>
1 B 3
2 B 4

有趣的是,与 mutate 的情况相同,比较一下:

df %>%
group_by(Group) %>%
mutate(check1=any(Value==4),
check2=Value==4)

Group Value check1 check2
<fctr> <int> <lgl> <lgl>
1 A 1 FALSE FALSE
2 A 2 FALSE FALSE
3 B 3 TRUE FALSE
4 B 4 TRUE TRUE

关于r - 选择至少具有某一特定值之一的组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40825037/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com