Сумуйте рядки в data.frame або матриці


81

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

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

Я відчуваю, що це щось близьке до:

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

Відповіді:


106

ви можете використовувати rowSums

rowSums(data) має дати вам те, що ви хочете.


16
А для проблеми OPdata$new <- rowSums(data[43:167])
Марек

6
Щоб заощадити чийсь час, можливо: уникайте плутанини з функцією, rowsumяка робить щось інше!
Августин

37

Функція rowSums (як згадує Грег) буде робити те, що ви хочете, але ви змішуєте у своїй відповіді методи підстановки, не використовуйте "$" при використанні "[]", ваш код повинен виглядати приблизно так:

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

Якщо ви хочете використовувати функцію, відмінну від суми, тоді зверніть увагу на? Застосовувати для застосування загальних функцій у рядках або стовпцях.


Я не впевнений, чому у мене виникла ця помилка: Помилка в rowSums (yieldData): 'x' має бути числовим
munmunbb

1
@munmunbb, ви отримали цю помилку, оскільки incomeDataвона не є числовою. Використовуйте щось на зразок, str(incomeData)щоб побачити, що це, а потім, можливо, перетворіть його в числову матрицю.
Грег Сноу

5

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

cbind(data, total = rowSums(data))

Цей метод додає totalстовпець до даних і дозволяє уникнути проблеми вирівнювання, яка виникає при спробі підсумовування ВСІХ стовпців за допомогою вищезазначених рішень (див. Пост нижче для обговорення цієї проблеми).

Додавання нового стовпця до помилки матриці


Див. Також dplyr :: mutate_all .
Paul Rougieux,
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.