x - числовой вектор, а y - вектор символов, одинаковой длины. Мне нужно получить общую сумму x для каждого символа в y. Так, например, если y имеет буквы алфавита, алгоритм должен суммировать все значения x, индексированные «A», а затем все значения, индексированные «B» и т. Д. Кажется, это можно сделать с помощью совокупная функция, но я не смог понять, как это сделать.Общая сумма числового вектора, зависящего от значений от символьного вектора
ответ
Тестовые данные, в dataframe для удобства, а не двух векторов:
> d = data.frame(x=runif(10),y=sample(LETTERS[1:3],10,TRUE))
> d
x y
1 0.25927547 B
2 0.95012667 C
3 0.85133149 C
4 0.64658480 B
etc
Используйте tapply
:
> tapply(d$x,d$y,sum)
A B C
1.547225 1.891884 2.666552
Убедите себя:
> sum(d$x[d$y=="A"])
[1] 1.547225
> sum(d$x[d$y=="B"])
[1] 1.891884
> sum(d$x[d$y=="C"])
[1] 2.666552
aggregate
функция с формулой аргумент упрощает работу с несколькими столбцами :
> d=data.frame(x=runif(10),y=sample(LETTERS[1:3],10,TRUE),z=sample(LETTERS[1:3],10,TRUE))
> d
x y z
1 0.4166217 A C
2 0.5816940 B C
3 0.9915231 A C
4 0.7177323 B C
etc
Мы хотим суммировать x в классах, определяемых y и z.
> aggregate(x~y+z,d,sum)
y z x
1 C A 1.6392171
2 B B 0.9389463
3 C B 0.3330299
4 A C 2.3748477
5 B C 1.2994263
Убедите себя:
> sum(d$x[d$y=="C" & d$z=="A"])
[1] 1.639217
> sum(d$x[d$y=="B" & d$z=="B"])
[1] 0.9389463
Обратите внимание, что C, A представляет собой отдельный вход A, C ...
два больших пальца вверх для вашего метода! очень эффективный и элегантный. – user3083324
Это работает с двойной индексацией? скажем, кадр данных с x, y и z? – user3083324
Прочтите помощь для tapply и посмотрите, можете ли вы это понять. – Spacedman
- 1. Получение значений float от вектора
- 2. Получение приблизительно уникальных значений из символьного вектора
- 3. opencv :: Mat от вектора вектора
- 4. R: Условное суммирование числового вектора
- 5. Способы хэширования числового вектора?
- 6. От вектора до более короткого вектора средних значений в Matlab
- 7. R входных имен от символьного вектора к заявлению формулы функции
- 8. как напечатать диапазон целых значений от вектора
- 9. Сохранение последовательных значений от функции до вектора?
- 10. Сортировка массива, зависящего от значений
- 11. Изменение выбранных элементов символьного вектора
- 12. Использование символьного вектора в htmlreg
- 13. Как осуществлять автоматическую генерацию цвета вектора из числового вектора
- 14. Как разбиению числового вектора биграмм от TDM матриц
- 15. возвращение Его & от вектора
- 16. Заказать дату от вектора
- 17. Направление от нормированного вектора
- 18. Конус от вектора направления
- 19. отсылка вектора от функции
- 20. Генерация матрицы от вектора
- 21. струнные сумма значений из вектора отображений Clojure
- 22. Заполнение всех значений вектора со значениями другого вектора в местах от другого вектора
- 23. Частичная сумма числового вектора по строке из data.frame
- 24. Получить категории из числового вектора
- 25. Сумма в два вектора
- 26. Частичная сумма подразделений вектора
- 27. Частичная сумма вектора
- 28. substract общая сумма от first_amount
- 29. Общая сумма от текущих ID
- 30. Примеры равноудаленных точек из числового вектора
пожалуйста сделать воспроизводимый пример, поэтому мы не должны Faff вокруг создание фиктивных кадров данных. – Spacedman
'aggregate (x, factor (y), sum)' не работает? – Usobi