У меня есть фрагмент кода агрегации, который работает достаточно хорошо, но работает немного медленно с кадром данных с 10e6 строками. Я не настолько опытен в R, поэтому приношу свои извинения за мой достойный передергивания код!
Я просто хочу сделать базовую сводку и суммировать значения для общего ключа ...
например, перейти от ...
key val
1 a 5
2 b 7
3 a 6
к ...
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.
Ура, Мат