聚合函数不能与R

时间:2016-07-08 07:21:17

标签: r dataframe aggregate-functions

我有一个数据框subdist.df,它包含子区域的数据。我试图根据数据框中的公共属性(DISTRICT列)总结行的值。

以下代码行

hello2 <-aggregate(.~DISTRICT, subdist.df,sum)

但这个没有。

hello <-aggregate(noquote(paste0(".~","DISTRICT")), subdist.df,sum)

我无法理解为什么会这样。我需要在一个函数中使用它,其中DISTRICT可以是来自用户的任何输入作为参数。

1 个答案:

答案 0 :(得分:1)

以iris data.frame为例:

aggregate(.~Species, iris, sum)
     Species Sepal.Length Sepal.Width Petal.Length Petal.Width
1     setosa        250.3       171.4         73.1        12.3
2 versicolor        296.8       138.5        213.0        66.3
3  virginica        329.4       148.7        277.6       101.3

以下paste0无法正常工作,因为noquote仅生成aggregate函数所需的表达式而非公式:

aggregate(noquote(paste0(".~","Species")), iris, sum)
Error in aggregate.data.frame(as.data.frame(x), ...) : 
  arguments must have same length

相反,在as.formula之前添加paste0会起作用:

aggregate(as.formula(paste0(".~","Species")), iris, sum)

     Species Sepal.Length Sepal.Width Petal.Length Petal.Width
1     setosa        250.3       171.4         73.1        12.3
2 versicolor        296.8       138.5        213.0        66.3
3  virginica        329.4       148.7        277.6       101.3