[英]R: Group_by depending on condition
假设我有这个简单的数据框:
df <- tibble(a = c(1, 1), b = c(2, 2))
我现在想知道如何在依赖于变量的管道中使用group_by
。 就像是,
flag <- T
resulting <- df %>%
filter(a > 0 & b >0) %>%
group_by(ifelse(flag), yes = c(a), no = c(a, b))
也就是说,如果flag == T
,那么我只想在a
列上分组。 如果标志为false
,我想对两列进行分组。
我认为这对我有用
flag <- T
resulting <- df %>%
filter(a > 0 & b >0) %>%
{if(flag) group_by(.,a) else group_by(. ,a , b)}
resulting
# A tibble: 2 × 2
# Groups: a [1] # <======== here grouped by a
a b
<dbl> <dbl>
1 1 2
2 1 2
通过更改标志
flag <- F
resulting <- df %>%
filter(a > 0 & b >0) %>%
{if(flag) group_by(.,a) else group_by(. ,a , b)}
resulting
# A tibble: 2 × 2
# Groups: a, b [1] # <======== here grouped by a ,b
a b
<dbl> <dbl>
1 1 2
2 1 2
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.