为什么使用group_by和mutate后会出现重复行?[duplicate]

myss37ts  于 2023-02-27  发布在  其他
关注(0)|答案(1)|浏览(137)
    • 此问题在此处已有答案**:

(18个答案)
5天前关闭。
样本数据如下:
| 数量|周期|年龄|
| - ------|- ------|- ------|
| 十五|小行星1991|五个|
| 二十个|小行星1991|五个|
| 十六|小行星1991|十五|
| 二十九|小行星1991|十五|
| 七十七|小行星1991|二十五|
| 四十四|小行星1991|二十五|
我使用下面的代码从按periodage分组的数据中获取总和:

#The name of dataset is a.
a %>% group_by(period,age)%>%
      mutate(n = sum(n))

但结果是:
| 数量|周期|年龄|
| - ------|- ------|- ------|
| 三十五|小行星1991|五个|
| 三十五|小行星1991|五个|
| 四十五|小行星1991|十五|
| 四十五|小行星1991|十五|
| 一百二十一|小行星1991|二十五|
| 一百二十一|小行星1991|二十五|
为什么会有重复的行?是因为它对每个组中的每个元素求和吗?

fdbelqdn

fdbelqdn1#

您需要使用summarize()函数。mutate()添加列而不合并数据。下面是一个可重现的示例:

##Check if dplyr is installed, load if installed, install if not##
if(!require(dplyr)){
install.packages("dplyr")
}

##Creating the data##
n<-c(15,20,16,29,77,44)
period<-rep(1991, 6)
age<-c(5,5,15,15,25,25)

a<-data.frame(n=n, period=period, age=age)

##Calculation with summarize()##
a %>% group_by(period, age) %>% summarize(n= sum(n))

相关问题