У меня есть фрагмент кода агрегации, который работает достаточно хорошо, но работает немного медленнее для фрейма данных с 10e6 строками. Я не настолько опытен в R, поэтому извиняюсь за мой код, достойный съеживания!
Я просто хочу сделать базовую сводку и сумму значений для общего ключа...
например перейти от...
key val
1 a 5
2 b 7
3 a 6
to...
key val
1 a 11
2 b 7
лучшее, что я могу сделать, это...
keys = unique(inp$key)
vals = sapply(keys, function(x) { sum(inp[inp$key==x,]$val) })
out = data.frame(key=keys, val=vals)
Я нутром чувствую, что inp[inp$key==x,]
не лучший способ. Есть ли очевидное ускорение, которое мне не хватает? Я могу сделать это в Hadoop (поскольку набор данных 10e6 на самом деле уже представляет собой набор данных из набора строк 2e9), но я пытаюсь улучшить свой R.
Привет, Мэт