就像下面关于聚合函数的源代码一样,我无法理解为什么我们必须在这里使用list function()。而不是我想用一个需要分组的列替换它。而且我不知道为什么我们使用相同的数据集,例如' train [Sales!= 0]'两次?如果我使用其他数据集作为第二个数据集参数怎么办?我认为它会让变化成为一个相当高的错误。
aggregate(train[Sales != 0]$Sales,
by = list(train[Sales != 0]$Store), mean)
也许有人可以说这是错误的用例。但我也在R文档中看到了这个源代码
## Compute the averages for the variables in 'state.x77', grouped
## according to the region (Northeast, South, North Central, West) that
## each state belongs to.
aggregate(state.x77, list(Region = state.region), mean)
感谢您阅读我的问题。
答案 0 :(得分:1)
首先,如果您不喜欢聚合函数的语法,可以查看dplyr
包。它的语法对您来说可能更容易一些。
回答你的问题:
train[Sales != 0]
两次,否则第一个和by
参数会查看不同的索引。您也可以先制作一个子集:基础R代码:
trainSales <- train[Sales != 0]
aggregate( trainSales$Sales, by = list(trainSales$Store), mean )
使用dplyr
,您可以执行以下操作:
train %>%
filter( Sales != 0) %>%
group_by( Store ) %>%
summarise_each( funs(mean) )
您看到我使用summarise_each
因为它将数据集压缩到一行,但您当然也可以做一些使所有行保持不变的内容(在这种情况下,使用do
)。