R中的聚合字符

时间:2016-09-26 17:38:40

标签: r char int aggregate

嗨我在下面有一个标题列表:

> head(qu3)
        fips      SCC Pollutant Emissions  type year
114288 24510 10100601  PM25-PRI     6.532 POINT 1999

> str(qu3)
'data.frame':   2096 obs. of  6 variables:
 $ fips     : chr  
 $ SCC      : chr  
 $ Pollutant: chr  
 $ Emissions: num  
 $ type     : chr  
 $ year     : int 

我尝试使用代码按年汇总并且有效:

qu3.aggreg <- aggregate(emission, by=list(year), sum)

但是,当我尝试使用下面的代码汇总不同列的数据时,由于某些原因,它不起作用并显示下面的错误。我想这可能与int和char有关吗?

Error in aggregate.data.frame(as.data.frame(x), ...) : 
  object 'type' not found

> qu3.aggreg <- aggregate(emission ~ type, data=qu3, FUN=SUM)
Error in model.frame.default(formula = emission ~ type, data = qu3) : 
  variable lengths differ (found for 'type')
> qu3.aggreg <- aggregate(emission, by=list(type ), sum)
Error in aggregate.data.frame(as.data.frame(x), ...) : 
  object 'type' not found

2 个答案:

答案 0 :(得分:0)

首先,我同意Rohit Das写的内容。

如果您收到最后一个错误,则第一个代码也不应该有效。

您需要指定要使用的数据,因此它应如下所示:

qu2.aggreg <- aggregate(qu3$emission, by=list(qu3$year), sum) 

该行的错误:

qu3.aggreg <- aggregate(emission ~ type, data=qu3, FUN=SUM)

说,长度不同,所以可能是在qu3 $类型列中有NA。 因此,首先尝试:

qu3$type <- factor(qu3$type, exclude=NULL)

这使得type成为一个因子,其中缺失值(NA)是一个级别。 然后:

  qu3.aggreg <- aggregate(emission ~ type, data=qu3, FUN=SUM)

应该工作。

答案 1 :(得分:0)

您还可以检查变量名称,例如排放或排放吗?我在str(qu3)

上找到了排放物