2010-10-21 20 views
36

soy novato y han estado buscando durante la última hora acerca de cómo hacer una simple función en R.filas Sum en hoja.de.datos o matriz

Tengo una trama de datos muy grande con filas y columnas como observaciones como genética marcadores Me gustaría crear una nueva columna que contenga la suma de un número seleccionado 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 las columnas de decir 43 a 167. Las columnas tienen 1 o 0. Con la nueva columna que contiene la suma de cada fila, podré clasificar a las personas que tienen la mayor cantidad de marcadores genéticos.

Siento que es algo parecido a:

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

vaya a www.rseek.org y escriba "suma de filas". El primer golpe te da la información que necesitas. Es posible que desee marcar ese sitio, para que no pierda otra hora buscando aroud ;-). –

+2

Vea también el complemento rseek Firefox: http://mycroft.mozdev.org/search-engines.html?name=rseek –

Respuesta

50

puede utilizar rowSums

rowSums(data) debería darle lo que quiere.

+6

Y para el problema OP 'data $ new <- rowSums (data [43: 167])' – Marek

+0

¡Uy! Lo siento por eso. – Greg

+1

Para ahorrarle tiempo a alguien, quizás: evite la confusión con la función 'rowsum' que hace algo más. – Augustin

23

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

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

Si desea utilizar una función que no sea la suma, mire? Aplicar para aplicar funciones generales a través de filas o columnas.

+0

No estoy seguro de por qué tengo este error: Error en rowSums (incomeData): 'x' debe ser numérico – munmunbb

+1

@munmunbb, has recibido ese error porque 'incomeData' no es numérico. Use algo como 'str (incomeData)' para ver qué es, luego posiblemente conviértalo en una matriz numérica. –