You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 01:10:27