Sumar filas en data.frame o matrix


81

Tengo un marco de datos muy grande con filas como observaciones y columnas como marcadores genéticos. Me gustaría crear una nueva columna que contenga la suma de un número selecto de columnas para cada observación usando R.

Si tengo 200 columnas y 100 filas, me gustaría crear una nueva columna que tenga 100 filas con la suma de, digamos, las columnas 43 a 167. Las columnas tienen 1 o 0. Con la nueva columna que contiene la suma de cada fila, podré clasificar los individuos que tienen más marcadores genéticos.

Siento que es algo cercano a:

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

Respuestas:


106

puedes usar rowSums

rowSums(data) debería darte lo que quieres.


16
Y para el problema de OPdata$new <- rowSums(data[43:167])
— Marek

6
Para ahorrarle tiempo a alguien, tal vez: ¡evite la confusión con la función rowsumque hace otra cosa!
— Augustin

37

La función rowSums (como menciona Greg) hará lo que desee, pero está mezclando técnicas de subconjunto en su respuesta, no use "$" cuando use "[]", su código debería verse algo más como:

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

Si desea utilizar una función distinta a la suma, consulte? Aplicar para aplicar funciones generales en filas o columnas.


No estoy seguro de por qué recibí este error: Error en sumas de fila (datos de ingresos): 'x' debe ser numérico
— munmunbb

1
@munmunbb, recibiste ese error porque incomeDatano es numérico. Use algo como str(incomeData)para ver qué es, luego posiblemente conviértalo en una matriz numérica.
— Greg Snow

5

Vine aquí con la esperanza de encontrar una manera de obtener la suma en todas las columnas de una tabla de datos y tener problemas al implementar las soluciones anteriores. Una forma de agregar una columna con la suma en todas las columnas usa la cbindfunción:

cbind(data, total = rowSums(data))

Este método agrega una totalcolumna a los datos y evita el problema de alineación que se produce al intentar sumar TODAS las columnas utilizando las soluciones anteriores (consulte la publicación a continuación para obtener una discusión sobre este problema).

Agregar una nueva columna al error de matriz


Consulte también dplyr :: mutate_all .
— Paul Rougieux
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.