data.frame报错:unused argument(by=StoreType)问题求助
解决你的DataFrame分组计算问题
嘿,我来帮你搞定这个报错问题!
首先得搞清楚为啥会报错:你用的data.frame方括号[]语法不对——[.data.frame这个函数根本不支持by参数,而且你也不能直接把聚合函数mean()放在方括号的列位置里,这就是报错提示“unused argument (by = StoreType)”的核心原因。
下面给你两种常用的正确写法,选你习惯的就行:
方法一:用dplyr(tidyverse风格,代码更清晰)
这是现在数据分析里很流行的写法,可读性强,步骤明确:
# 如果还没装dplyr先安装 # install.packages("dplyr") library(dplyr) # 按需求生成新dataframe new_df <- merged.tables %>% filter(Open == 1) %>% # 先筛选Open等于1的行 group_by(StoreType) %>% # 按StoreType分组 summarise(Avg_Sales = mean(na.omit(Sales))) # 计算每组Sales的平均值(自动忽略NA)
方法二:用Base R的aggregate函数(不用装额外包)
如果你不想装新包,用R自带的函数也能搞定:
new_df <- aggregate( Sales ~ StoreType, # 指定要计算的变量和分组变量 data = merged.tables[merged.tables$Open == 1, ], # 先筛选Open=1的子数据集 FUN = function(x) mean(na.omit(x)) # 定义计算逻辑:忽略NA后求平均 )
简单总结下:你之前的错误是把分组聚合的逻辑硬塞进了dataframe的子集操作里,这不符合R的语法规则,换成上面两种专门做分组聚合的写法就没问题啦!
内容的提问来源于stack exchange,提问作者A2018
相关产品推荐
相关产品推荐

