r - Group_by 表示 R 中的多列

标签 r

假设我有一个数据框:

set.seed(123)
dat<-data.frame(x=letters[1:9], 
                y=rep(LETTERS[1:3], each=3), 
                v1=rnorm(9,1,2),
                v2=rnorm(9,3,2),
                v3=rnorm(9,5,6))
dat
  x y         v1         v2         v3
1 a A -0.1209513  2.1086761  9.2081354
2 b A  0.5396450  5.4481636  2.1632516
3 c A  4.1174166  3.7196277 -1.4069422
4 d B  1.1410168  3.8015429  3.6921505
5 e B  1.2585755  3.2213654 -1.1560267
6 f B  4.4301300  1.8883177  0.6266526
7 g C  1.9218324  6.5738263  1.2497644
8 h C -1.5301225  3.9957010 -5.1201599
9 i C -0.3737057 -0.9332343 10.0267223

如何计算列 v1 到 v3 的每组 y 的均值?

  y       v1       v2       v3
1 A v1_meanA v2_meanA v3_meanA
2 B v1_meanB v2_meanB v3_meanB
3 C v1_meanC v2_meanC v3_meanC

我想使用 tidyverse::group_by(y) 但不确定如何通过 summarise() 传递多个列。

最佳答案

试试这个:

library(dplyr)
set.seed(123)
dat<-data.frame(x=letters[1:9], 
  y=rep(LETTERS[1:3], each=3), 
  v1=rnorm(9,1,2),
  v2=rnorm(9,3,2),
  v3=rnorm(9,5,6))
#Code
dat %>% select(-x) %>% group_by(y) %>% summarise_all(.funs = mean,na.rm=T)

# A tibble: 3 x 4
  y          v1    v2    v3
  <fct>   <dbl> <dbl> <dbl>
1 A     1.51     3.76  3.32
2 B     2.28     2.97  1.05
3 C     0.00600  3.21  2.05

关于r - Group_by 表示 R 中的多列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63250406/

相关文章:

从指定行和列的 facet_grid 中删除未使用的因素

r - 将 data.frame 列更改为 R 中的行

r - 需要帮助将 Tidyr 的 Spread 合并到输出具有分组计数的数据帧列表的函数中

r - 当 R 生成 LaTeX 代码时 Knit 'asis' 选项不起作用

r - 使用 NVD3 在 R 的 rCharts 中绘制对数刻度

从向量中删除两个最大的唯一数字

r - R/Splus 中具有可变长度数据的数据帧

r - 为 data.table 填充缺失日期的最快方法(续)

r - 模糊匹配两个字符串 ur r

r - 如何有效地进行字符串的成对替换