我可以在dplyr中汇总一个group-by吗?

时间:2018-06-06 17:58:46

标签: r dplyr

如果不使用加入或合并,我想在此表中添加mean(metric)列,将metric平均值sector

  symbol       sector      date_bom     recommendation   metric
   A       Strip Center    20XX-08-01     BUY             0.01
   B       Office Center   20XX-09-01     BUY             0.02
   C       Strip Center    20XX-07-01     SELL           -0.01

我在dplyr中尝试过几件事,但似乎我想要/需要在汇总条款中使用group-by,这是不允许的。

1 个答案:

答案 0 :(得分:0)

如果我们要创建列,请使用mutate代替summarise

library(dplyr)
df1 %>% 
   group_by(sector) %>%
   mutate(Mean = mean(metric))

但是,可以在list然后summarise中创建unnest列,但这里不需要。在输出列length不是1或与每组的行数不同的情况下,它很有用。此外,summarise只会将分组列和汇总列留给所有其他列

base R中,我们使用ave进行此类操作

df1$Mean <- with(df1, ave(metric, sector))

请注意,FUN有一个ave参数,但默认情况下它会获得mean。所以,这里不需要