varias valores una tabla studio graficas frecuencias filas faltantes eliminar datos data contar con como r rows zero

una - eliminar filas con valores na en r



¿Cómo eliminar filas con un valor cero en R? (6)

Bueno, podrías cambiar tus 0 por NA y luego usar una de esas soluciones, pero por el bien de la diferencia, podrías notar que un número solo tendrá un logaritmo finito si es mayor que 0 , por lo que rowSums of the log solo será finito si no hay ceros en una fila.

dfr[is.finite(rowSums(log(dfr[-1]))),]

Tengo un problema para resolver cómo eliminar filas con un valor de Cero en R. En otras na.omit() , puedo usar na.omit() para eliminar todos los valores de NA o usar complete.cases() para eliminar filas que contengan valores de NA.

¿Hay alguien que sepa cómo eliminar filas con valores de cero en R?

Por ejemplo :

antes de

| DateTime | Mac1 | Mac2 | Mac3 | Mac4 | ---------------------------------------------------- | 2011-04-02 06:00 | 20 | 0 | 20 | 20 | | 2011-04-02 06:05 | 21 | 21 | 21 | 21 | | 2011-04-02 06:10 | 22 | 22 | 22 | 22 | | 2011-04-02 06:15 | 23 | 23 | 0 | 23 | | 2011-04-02 06:20 | 24 | 24 | 24 | 24 | | 2011-04-02 06:25 | 0 | 25 | 25 | 0 |

Después

| DateTime | Mac1 | Mac2 | Mac3 | Mac4 | ---------------------------------------------------- | 2011-04-02 06:05 | 21 | 21 | 21 | 21 | | 2011-04-02 06:10 | 22 | 22 | 22 | 22 | | 2011-04-02 06:20 | 24 | 24 | 24 | 24 |


Hay algunas maneras diferentes de hacer esto. Prefiero usar apply , ya que es fácilmente extensible:

##Generate some data dd = data.frame(a = 1:4, b= 1:0, c=0:3) ##Go through each row and determine if a value is zero row_sub = apply(dd, 1, function(row) all(row !=0 )) ##Subset as usual dd[row_sub,]


Prefiero una adaptación simple del método de csgillespie, por encima de la necesidad de una definición de función:

d[apply(d!=0, 1, all),]

donde d es su marco de datos.


Probablemente aceptaría la sugerencia de Joran de reemplazar los 0 con los NA y luego usar las funciones integradas que mencionaste. Si no puede / no quiere hacer eso, un enfoque es usar any() para encontrar filas que contengan 0 y subcontratarlas:

set.seed(42) #Fake data x <- data.frame(a = sample(0:2, 5, TRUE), b = sample(0:2, 5, TRUE)) > x a b 1 2 1 2 2 2 3 0 0 4 2 1 5 1 2 #Subset out any rows with a 0 in them #Note the negation with ! around the apply function x[!(apply(x, 1, function(y) any(y == 0))),] a b 1 2 1 2 2 2 4 2 1 5 1 2

Para implementar el método de Joran, algo como esto debería ayudarte a comenzar:

x[x==0] <- NA


Puedes usar el filtro del paquete dplyr.

Llamemos a tu marco de datos df

library(dplyr) df1 <- filter(df, Mac1 > 0, Mac2 > 0, Mac3 > 0, Mac4 > 0)

df1 solo tendrá filas con entradas por encima de cero. Espero que esto ayude.


Yo haría lo siguiente.

Establecer el cero a NA.

data[data==0] <- NA data

Eliminar las filas asociadas con NA.

data2<-data[complete.cases(data),]