使用aggregate()获取“无效'类型'(字符)参数”错误

时间:2016-01-31 22:21:34

标签: r aggregate

我有以下CSV:

color,val2,val3
blue,1,4
green,7,3
blue,4,2
red,9,3
red,2,6
blue,1,7

我只想按颜色汇总。

当我在尝试时:

csv <- read.csv("/home/user/file.csv", stringsAsFactors=FALSE)
data <-aggregate(csv, list(csv[["color"]]), sum)

我得到了

  

FUN中的错误(X [[i]],...):参数的“类型”(字符)无效

2 个答案:

答案 0 :(得分:6)

该错误来自 Search.prototype.render = function (decorated) { var $search = $( '<li>' + '<input tabindex="-1"' + ' autocomplete="off" autocorrect="off" autocapitalize="off"' + ' spellcheck="false" role="textbox" aria-autocomplete="list" style="display: none" />' + '<p class="placeHolderText"></p>' + '</li>' ); ,因为您试图对sum()列中的字符元素求和。

color

您需要从sum("a") # Error in sum("a") : invalid 'type' (character) of argument 参数中删除color列,因为它未在聚合中使用,但实际上是x参数。

by

但是公式方法也会起作用并且更清洁(但速度更慢)。

aggregate(csv[-1], csv["color"], sum)
#   color val2 val3
# 1  blue    6   13
# 2 green    7    3
# 3   red   11    9

答案 1 :(得分:3)

在这种情况下,您需要将颜色移动到另一侧,因为您实际上无法在字符向量上聚合。您还可以使用dplyr包,如下所示:

library(dplyr)
csv %>% group_by(color) %>% summarise_each(funs(sum))

使用以下输出:

  color  val2  val3
  (chr) (int) (int)
1  blue     6    13
2 green     7     3
3   red    11     9