Суммирование строк в data.frame или матрице - PullRequest
58 голосов
/ 22 октября 2010

У меня очень большой фрейм данных со строками в виде наблюдений и столбцами в качестве генетических маркеров. Я хотел бы создать новый столбец, который содержит сумму выбранного количества столбцов для каждого наблюдения, используя R.

Если у меня есть 200 столбцов и 100 строк, я хотел бы создать новый столбец, который имеет 100 строк с суммой, скажем, столбцов с 43 по 167. Столбцы имеют 1 или 0. С новым столбцом, который содержит По сумме каждой строки я смогу отсортировать людей, у которых больше всего генетических маркеров.

Я чувствую, что это что-то близкое к:

data$new=sum(data$[,43:167])

Ответы [ 3 ]

83 голосов
/ 22 октября 2010

вы можете использовать rowSums

rowSums(data) должен дать вам то, что вы хотите.

26 голосов
/ 22 октября 2010

Функция rowSums (как упоминает Грег) будет делать то, что вы хотите, но вы смешиваете методы поднабора в своем ответе, не используйте «$» при использовании «[]», ваш код должен выглядеть примерно так:

data$new <- rowSums( data[,43:167] )

Если вы хотите использовать функцию, отличную от sum, посмотрите на? Apply для применения общих функций в строках или столбцах.

2 голосов
/ 13 июля 2018

Я пришел сюда в надежде найти способ получить сумму по всем столбцам таблицы данных и столкнуться с проблемами, реализующими вышеуказанные решения. Способ добавления столбца с суммой по всем столбцам использует функцию cbind:

cbind(data, total = rowSums(data))

Этот метод добавляет столбец total к данным и позволяет избежать проблемы выравнивания, возникающей при попытке суммирования по ВСЕМ столбцам с использованием вышеуказанных решений (обсуждение этой проблемы см. В посте ниже).

Добавление нового столбца к матричной ошибке

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...