我有以下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]],...):参数的“类型”(字符)无效
答案 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