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])
data$new <- rowSums(data[43:167])
rowsum
que hace otra cosa!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.
fuente
incomeData
no es numérico. Use algo comostr(incomeData)
para ver qué es, luego posiblemente conviértalo en una matriz numérica.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
cbind
función:Este método agrega una
total
columna 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
fuente