R中dplyr的summarise()忽略已创建分组的问题求助
问题原因与解决方案
问题出在变量名混用:你把生成了qdate列的数据存到了mfs.dataframe里,但后续分组汇总用的是原始数据框mfs_df——这个数据框里根本没有qdate列,group_by(qdate)相当于无效分组,所以summarise只返回了整表的最后一行。
正确写法一(单管道完成)
直接在同一个链式操作里完成列生成、分组和汇总,避免中间变量混淆:
mfsQtrly <- mfs_df |> dplyr::mutate(qdate = as.yearqtr(Date)) |> # 可选:如果数据没按日期排序,先确保顺序正确 dplyr::arrange(Date) |> dplyr::group_by(qdate) |> dplyr::summarise( m2 = last(m2), private_sector_claims = last(private_sector_claims), total_deposits = last(total_deposits) )
注:group_by的分组列qdate会自动保留在结果中,不需要在summarise里重复定义。
正确写法二(复用中间变量)
如果你想保留mfs.dataframe这个中间数据,就用它来做后续分组:
# 先生成带季度列的数据 mfs.dataframe <- mfs_df |> dplyr::mutate(qdate = as.yearqtr(Date)) # 用中间数据框分组汇总 mfsQtrly <- mfs.dataframe |> dplyr::arrange(Date) |> dplyr::group_by(qdate) |> dplyr::summarise( m2 = last(m2), private_sector_claims = last(private_sector_claims), total_deposits = last(total_deposits) )
内容的提问来源于stack exchange,提问作者Atang
相关产品推荐
相关产品推荐

