Foro de debate

Filtrar valores 0 de todas las variables

Filtrar valores 0 de todas las variables

de Mercedes Gil -
Número de respuestas: 3

Hola, 

Tengo una base de datos en R con 420 variables numéricas (consumo de un alimento) y una n de 340000 aprox (consumidores). 

Necesito filtrar esa base, creando una tabla donde figure la n de consumidores y  la n de no consumidores por cada variable.

Sería algo así:

                consumidores (n)    no consumidores (n)

Variable1
Variable2 
Variable3  
.

.etc

 

 

Alguien sabe cómo ?

 

Gracias!

En respuesta a Mercedes Gil

Re: Filtrar valores 0 de todas las variables

de Manuel Muñoz Márquez -

Hola Mercedes:

Por lo que he entendido, lo siguiente te valdría
d <- data.frame(Consumidores=c('A', 'B', 'C', 'D', 'E'), peras=c(0, 1, 2, 0, 3), tomates=c(1,2,3,0,4))
d
f <- function(x) table(as.factor(x > 0))
r <- mapply(f, d[2:ncol(d)])
rownames(r) <- c('No consumidores', 'Consumidores')
t(r)

El resultado

> d <- data.frame(Consumidores=c('A', 'B', 'C', 'D', 'E'), peras=c(0, 1, 2, 0, 3), tomates=c(1,2,3,0,4))
> d
  Consumidores peras tomates
1            A     0       1
2            B     1       2
3            C     2       3
4            D     0       0
5            E     3       4
> f <- function(x) table(as.factor(x > 0))
> r <- mapply(f, d[2:ncol(d)])
> rownames(r) <- c('No consumidores', 'Consumidores')
> t(r)
        No consumidores Consumidores
peras                 2            3
tomates               1            4
> t(r)
        No consumidores Consumidores
peras                 2            3
tomates               1            4

Cuando hagas una consulta pon algunos datos y el resultado que esperas, de esa forma se entiende mejor y es más fácil ayudarte.

Un saludo.

En respuesta a Manuel Muñoz Márquez

Re: Filtrar valores 0 de todas las variables

de Mercedes Gil -

Gracias! Ya lo he resuelto, convirtiendo los 0 en NAs, y de esa forma conociendo el número de NAs de cada variable. 

En la forma que me has descrito podría valer pero como tengo 350000 consumidores, es imposible hacerlo manual con cada ID como lo has puesto:

Consumidores=c('A', 'B', 'C', 'D', 'E')

y con respecto al alimento, también son 420, entonces mi problema era el manejo de una base de datos tan grande.



Gracias nuevamente por la respuesta
En respuesta a Mercedes Gil

Re: Filtrar valores 0 de todas las variables

de Manuel Muñoz Márquez -

Buenas Mercedes:

Lo único que he hecho manual es la creación del conjunto de datos de prueba, pues no tengo tu conjunto de datos. A partir de ahí todo es automático.

Sigo sin entender lo que estás intentando hacer. ¿Podrías decirnos cuál es el resultado que esperarías obtener para el conjunto de datos que he propuesto?

¿Puedes compartir tu solución?

Un saludo.