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

为什么R语言中aggregate的公式法与数据框法返回结果不一致

原因说明

aggregate的公式接口与非公式(数据框)接口的默认行为存在差异,是结果不一致的核心原因:

  • 公式接口默认设置na.action = na.omit,会先删除数据集中任意列存在NA值的所有行,再执行分组统计。你运行公式法时,ALLISON PARK分组下的异常行(比如关联其他列的NA值、分组变量隐含空值)已经被提前过滤,剩余的PRICE有效值可以正常计算均值。
  • 非公式接口没有全局过滤无效行的默认逻辑,会将分组下所有原始值直接传入计算函数。而mean函数默认na.rm = FALSE,只要分组内存在1个NA值就会返回NA。你已经确认PRICE列无NA,可以排查ALLISON PARK分组对应的PROPERTYCITY字段是否有拼写异常、空值,或者其他列是否存在NA值。

解决方法

在非公式法调用时显式指定na.rm = TRUE,同时为传入的列表命名可以得到和公式法完全一致的输出结构:

mean_price_per_city_2 <- aggregate(
  list(PRICE = property_data$PRICE),
  by = list(PROPERTYCITY = property_data$PROPERTYCITY),
  FUN = mean, 
  na.rm = TRUE
)

如果调整后结果仍不一致,可以单独提取分组验证均值:

allison_price <- property_data$PRICE[property_data$PROPERTYCITY == "ALLISON PARK"]
mean(allison_price, na.rm = TRUE)

如果该值和公式法返回的193814.08一致,就可以确认是两种接口的行过滤逻辑差异导致的结果不同。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 21:36:02