Estoy intentando calcular la media de cada fila en mi marco de datos. Hay ceros en cada fila y quiero excluirlos del cálculo. No quiero eliminar toda la fila sino solo los ceros y calcular la media de los valores remanentes en cada fila. Si row tiene todos los valores cero, el resultado debe ser cero.¿Cómo puedo calcular los promedios de filas mientras excluyo los valores cero de las filas en el marco de datos?
Respuesta
¿Qué tal
nzmean <- function(x) {
if (all(x==0)) 0 else mean(x[x!=0])
}
apply(mydata,1,nzmean)
?
Se me ocurre que podría ser marginalmente más rápida de hacer
nzmean <- function(x) {
zvals <- x==0
if (all(zvals)) 0 else mean(x[!zvals])
}
es decir, tratar de evitar hacer la comparación de x
con cero dos veces.
O lo que podría hacer es asignar NA
a cero, que es efectivamente lo que quiere hacer. Algunos datos de la muestra:
spam = matrix(runif(100), 10, 10)
spam[1,2] = 0
spam[4,3] = 0
spam[10,] = 0
spam[spam == 0] <- NA
y utilizar rowMeans
, la ifelse
es para comprobar si hay filas que son totalmente NA
. El argumento na.rm
es importante aquí:
mean_values = rowMeans(spam, na.rm = TRUE)
mean_values = ifelse(is.na(mean_values), 0, mean_values)
esto es probablemente (?) Más rápido que mi solución para conjuntos de datos muy grandes. –
También me gusta usar NA conceptualmente, deja en claro que 0 no es un número válido. –
- 1. cómo MySQL ordenar las filas con los mismos valores
- 2. Eliminar filas en el marco de datos con el factor ""
- 3. Cambiar el color de fondo en las filas, pero no en los encabezados de las filas
- 4. Operar en pares de filas de un marco de datos
- 5. Inserte los valores de NA en el marco de datos
- 6. Combinar filas dentro del marco de datos
- 7. ¿Cómo puedo obtener los nombres de las columnas y los datos de las filas en orden con DBI en Perl?
- 8. ¿Cómo puedo eliminar filas que contengan '0' de ciertas columnas mientras mantengo las filas ID de las filas restantes en R
- 9. La fusión de dos filas a uno, mientras que la sustitución de los valores nulos
- 10. Cómo calcular la suma de un campo en todas las filas de un alias
- 11. ¿Cómo cambiar los colores de las filas de TableView?
- 12. ¿Cómo puedo seleccionar filas de un marco de datos que no coinciden?
- 13. "Loop through" data.table para calcular promedios condicionales
- 14. ¿Cómo dividir un marco de datos por filas y luego procesar los bloques?
- 15. Cómo seleccionar los datos top x datos después de las filas y de SQL Server
- 16. ¿Cómo puedo reordenar filas en la base de datos sql?
- 17. ¿Cómo eliminar los nuevos caracteres de línea de las filas de datos en mysql?
- 18. ¿Cómo llegar a las n filas anteriores en un marco de datos?
- 19. ¿cómo puedo actualizar las filas al azar?
- 20. Cómo omitir las filas no válidas al leer el marco de datos del archivo en R?
- 21. JSF tabla de datos: agregar y eliminar filas borrar valores de filas
- 22. Cómo reducir automáticamente los números de fila en el marco de datos R al eliminar filas en R
- 23. ¿Cómo contar un grupo por las filas en los rieles?
- 24. ¿Los procedimientos almacenados bloquean las tablas/filas?
- 25. ¿Cómo puedo visualizar las filas dentro de las filas en la tabla?
- 26. jQueryUI ordenable en las filas de la tabla los contrae mientras se arrastra
- 27. Obtenga los índices de las filas seleccionadas en GridView
- 28. Obtener el mínimo de las filas en un marco de datos
- 29. En R, ¿cómo recorre las filas de un marco de datos realmente rápido?
- 30. mapeo sobre las filas de una trama de datos
+1 Ajustar. Eliminaré mi respuesta. – Andrie
@Ben Bolker Gracias por la ayuda .. – Gongon
si responde su pregunta, puede hacer clic en la marca de verificación para aceptar la respuesta ... –