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

如何用R对单户住宅销售数据做汇总、计数并按均价排序?

问题解决思路与代码

错误原因分析

  • 第一条代码报错:group_by()的参数只能是列名,不能嵌套distinct()函数。distinct()是用来筛选唯一行的独立操作,不是分组参数,因此触发类型错误。
  • 第二条代码无效:同时按zip_code和sold_price分组,相当于把「每个邮编+每个成交价」作为一个分组。如果你的数据里每条销售记录的价格都是唯一的,分组后行数和原数据完全一致,等于没做聚合统计。

正确实现代码

用dplyr链式操作,先按邮编分组,再聚合计算核心指标,最后排序并生成排名:

library(dplyr)

# 按邮编统计并排序排名
sales_summary <- sales %>%
  group_by(zip_code) %>%
  summarize(
    sales_count = n(),                  # 销售套数
    total_sales = sum(sold_price, na.rm = TRUE),  # 总销售额(忽略缺失值)
    avg_price = total_sales / sales_count         # 计算均价
    # 也可以直接用 mean(sold_price, na.rm = TRUE) 算均价,结果一致
  ) %>%
  ungroup() %>%  # 取消分组状态,避免后续操作受分组限制
  arrange(desc(avg_price)) %>%  # 按均价降序排列
  mutate(zip_rank = row_number())  # 生成排名(相同均价按顺序排;要同均价同排名可改用 rank(desc(avg_price), ties.method = "min"))

代码说明

  • group_by(zip_code):仅以邮编作为分组依据,确保每个邮编对应一个独立统计组
  • summarize():对每个分组计算聚合值,n()返回组内行数(即销售套数),sum()计算总销售额
  • ungroup():必须取消分组,否则后续的排序、排名操作可能仅在分组内生效
  • arrange(desc(avg_price)):将均价最高的邮编排在最前列
  • mutate(zip_rank = row_number()):生成连续排名,可根据需求调整排名规则

内容的提问来源于stack exchange,提问作者Sheena Puckett

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 22:02:07