R 我可以按列将\u分组,以\u开头吗?

R 我可以按列将\u分组,以\u开头吗?,r,dplyr,tidyselect,R,Dplyr,Tidyselect,我正在处理一个大数据帧,它有许多列我想按它们分组。我想这样做: output <- df %>% group_by(starts_with("GEN", ignore.case=TRUE),x,y) %>% summarize(total=n()) %>% arrange(desc(total)) 输出% 分组依据(以“GEN”开头,忽略。大小写=TRUE),x,y)%>% 汇总(总计=n())%>% 安排(说明(总计)) 有办法

我正在处理一个大数据帧,它有许多列我想按它们分组。我想这样做:

output <- df %>% 
  group_by(starts_with("GEN", ignore.case=TRUE),x,y) %>% 
  summarize(total=n()) %>% 
  arrange(desc(total))
输出%
分组依据(以“GEN”开头,忽略。大小写=TRUE),x,y)%>%
汇总(总计=n())%>%
安排(说明(总计))
有办法做到这一点吗?可能使用group by at或其他类似函数?

要在
group by()
中使用
starts with()
,您需要将其包装在
中(
)。下面是一个使用一些构建数据的示例

library(dplyr)
mtcars %>%
group_by(across(starts_with("c"))) %>%
summarize(total = n()) %>%
arrange(-total)

# A tibble: 9 x 3
# Groups:   cyl [3]
    cyl  carb total
  <dbl> <dbl> <int>
1     4     2     6
2     8     4     6
3     4     1     5
4     6     4     4
5     8     2     4
6     8     3     3
7     6     1     2
8     6     6     1
9     8     8     1
库(dplyr)
mtcars%>%
分组依据(交叉(以“c”开头)%>%
汇总(总计=n())%>%
排列(总计)
#一个tibble:9x3
#组别:共青团[3]
循环碳水化合物总量
1     4     2     6
2     8     4     6
3     4     1     5
4     6     4     4
5     8     2     4
6     8     3     3
7     6     1     2
8     6     6     1
9     8     8     1

是的,有。您可以在处使用
分组功能:

mtcars%>%group\u by\u at(VAR(从(“c”)档位开始))

按名称以“c”开头的所有列和列
gear

输出
#tible:32 x 11
#组:气缸、carb、档位[12]
mpg气缸显示hp drat wt qsec与am齿轮carb
1  21       6  160    110  3.9   2.62  16.5     0     1     4     4
2  21       6  160    110  3.9   2.88  17.0     0     1     4     4
3  22.8     4  108     93  3.85  2.32  18.6     1     1     4     1
4  21.4     6  258    110  3.08  3.22  19.4     1     0     3     1
5  18.7     8  360    175  3.15  3.44  17.0     0     0     3     2
6  18.1     6  225    105  2.76  3.46  20.2     1     0     3     1
7  14.3     8  360    245  3.21  3.57  15.8     0     0     3     4
8  24.4     4  147.    62  3.69  3.19  20       1     0     4     2
9  22.8     4  141.    95  3.92  3.15  22.9     1     0     4     2
10  19.2     6  168.   123  3.92  3.44  18.3     1     0     4     4
# ... 还有22排

您是否在
群组中尝试过?如果是,发生了什么?没有答案,很难比猜测做得更好。我必须经常提醒自己,如果我尝试编写最终不起作用的代码,就不会有什么不好的事情发生。你似乎有一个很好的猜测,不妨尝试一下
# A tibble: 32 x 11
# Groups:   cyl, carb, gear [12]
     mpg   cyl  disp    hp  drat    wt  qsec    vs    am  gear  carb
   <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
 1  21       6  160    110  3.9   2.62  16.5     0     1     4     4
 2  21       6  160    110  3.9   2.88  17.0     0     1     4     4
 3  22.8     4  108     93  3.85  2.32  18.6     1     1     4     1
 4  21.4     6  258    110  3.08  3.22  19.4     1     0     3     1
 5  18.7     8  360    175  3.15  3.44  17.0     0     0     3     2
 6  18.1     6  225    105  2.76  3.46  20.2     1     0     3     1
 7  14.3     8  360    245  3.21  3.57  15.8     0     0     3     4
 8  24.4     4  147.    62  3.69  3.19  20       1     0     4     2
 9  22.8     4  141.    95  3.92  3.15  22.9     1     0     4     2
10  19.2     6  168.   123  3.92  3.44  18.3     1     0     4     4
# ... with 22 more rows