为什么dplyr中的独立group_by似乎没有做任何事情?

时间:2015-07-26 00:28:29

标签: r dataframe dplyr

我有df如下;

set.seed(1)
No <- rep(seq(0,95,1),times=21)
AC <- rep(rep(c(78,110),each=1),times=length(No)/2)
AR <- rep(rep(c(256,320,384),each=2),times=length(No)/6)
AM <- rep(1,times=length(No))
DQ <- rep(rep(seq(0,15,1),each=6),times=3)
 V <- rep(seq(100,2100,100),each=96)
 R <- sort(replicate(3, sample(5000:6000,96)))

 df <- data.frame (No,AC,AR,AM,DQ,V,R)
  

头部df

  No  AC  AR AM DQ   V    R
1  0  78 256  1  0 100 5012
2  1 110 256  1  0 100 5013
3  2  78 320  1  0 100 5022
4  3 110 320  1  0 100 5025
5  4  78 384  1  0 100 5034
6  5 110 384  1  0 100 5043

library(dplyr)
df %>% group_by(AR,AC,No)

当我尝试group_by names(df)中的任何一个时,没有任何变化我获得与df相同的格式输出。有什么想法解决这个问题吗?

1 个答案:

答案 0 :(得分:3)

dplyr按预期工作。 group_by命令本身不会输出除分组数据框以外的任何内容:

str(df)
'data.frame':   2016 obs. of  7 variables:...


df1 <- df %>% group_by(AR,AC,No)
str(df1)
Classes ‘grouped_df’, ‘tbl_df’, ‘tbl’ and 'data.frame': 2016 obs. of  7 variables:....

如果您想要汇总统计信息(每组一个输出行),您可以尝试使用函数汇总:

df2 <- df %>% group_by(AR,AC,No) %>%
              summarise(mean = mean(R), number = n())

或者您可以尝试mutate(每行的新列),例如每组中的排名:

df3 <- df %>% group_by(AR,AC,No) %>%
              arrange(R) %>%
              mutate(rank = row_number())

查看dplyr vignette