[R-es] Frecuencias

Marcuzzi, Javier Rubén javier.ruben.marcuzzi en gmail.com
Jue Mar 1 13:08:31 CET 2012


Intentemos entender su problema, corra el siguiente código, aunque ahora no 
calculemos frecuencias

a <- c()
b <- c(1,2,3)
length(a)
length(b)

Entiendo que usted quiere salidas como las que está viendo pero con 
frecuencias.

Usted tiene algo de 18 edades, podría hacer algo como Edad_2_años <- de la 
forma que le sea más fácil "años =2"
Sería algo como (prueba esto en R)

Edad_2_años <- c(2,2,2,2,2,2,2,2,2)
length(Edad_2_años)

Pero tendría que acomodar sus datos y utilizar alguna función tipo lapply, 
doBy, ... o escribir bucles para todas sus provincias.

Javier Marcuzzi





-----Mensaje original----- 
From: ppueyo en isciii.es
Sent: Thursday, March 01, 2012 8:31 AM
To: izquierdo ; r-help-es en r-project.org
Subject: Re: [R-es] Frecuencias

Bueno, he de decir que he mirado los dos métodos que me habeis sugerido, 
que son muy parecidos; aun así no me ha funcionado se queja de la longitud 
diferente de vectores ....
El caso es que he pensado otra forma de hacer, más larga, pero creo que 
efectiva, el problema es que tampoco funciona, y no sé porqué, porque lo 
veo muy sencillo (me llevo mal con R) os pongo un poco el caso a ver si 
podéis ver algún fallo de sintaxis y lo entendéis:

Tengo 18 grupos de edad (del 1 al 18), pero al pedir las precuencias, es 
posible que haya grupos de edad sin representación, por tanto necesitaría 
un 0.

En este caso:

Tabla "frech"

    grupo   frecuencia
5  "5"      "1"
6  "6"      "1"
7  "7"      "3"
8  "8"      "2"
9  "9"      "5"
10 "10"  "20"
11 "11"  "20"
12 "12"  "31"
13 "13"  "39"
14 "14"  "54"
15 "15"  "66"
16 "16"  "54"
17 "17"  "23"
18 "18"  "12"

Así que pensé en una función IF, de tal modo que si el primer grupo era 
igual a "1" , entonces me escibiese la frecuencia en otra columna que había 
creado previamente   f99h<-c( )
En caso contrario, que me escribiese un "0".
Éste es el código que he utilizado, y no me hace nada....

> if(frech[,1]=="1"){
+ f99h[1,1]=frech[1,2]
+ f99h[1,1]<-0}

Está claro que si yo pidiera f99h, el primer número tendría que ser un 
"0", pero no lo hace....
y así lo tengo que hacer con los 17 grupos restantes; me imagino que habrá 
una forma más rápida, pero ya os digo que lo del "factor(levels......" no 
me funciona. ¿Se podría iterar la función IF en un bucle for? porque 
ahora son 18 grupos y no me supone mucho tiempo, pero cuando tenga 18 grupos 
divididos en 52 provincias.... me acabaré cortando las venas.... jejeje

Un saludo, y gracias
Pablo





----- Mensaje original -----
De: izquierdo
Para: r-help-es en r-project.org
Enviado: 27/02/2012 14:02:07
Asunto: Re: [R-es] Frecuencias


Lo primero que tienes que hacer es mirar los levels de tu variable de
edades, los que no aparecenahí no van a aparecer en la tabla, yo haría
una cosa así:

> Edades <- c(15,16,19,20,20)
> table(Edades)
Edades
15 16 19 20
1 1 1 2
> levels(factor(Edades))
[1] "15" "16" "19" "20"
> lab <- factor(max(Edades):min(Edades))
> EdadesFactor <- factor(Edades, levels=lab)
> table(EdadesFactor)
EdadesFactor
20 19 18 17 16 15
2 1 0 0 1 1

Espero que te sirva.
Un saludo,

Pelayo


On Mon, 27 Feb 2012 14:25:04 +0100, ppueyo en isciii.es wrote:
> Hola a tod en s:
>
> Tengo una duda sobre la salida de la tabla de frecuencias de R.
>
> Estoy utilizando la función table, para que me saque el numero de
> casos agrupados por edades; el caso, es que si no hay de una edad,
> necesito que me ponga un 0; o un NA, algo para que luego pueda
> utilizar los vectores de salida para seguir haciendo operaciones y
> que
> no se me queje de la longitud, habría alguna forma?
>
> La opción que había pensado, aunque no se muy bien como llevarla a
> cabo, sería crear un vector de "0" y con funciones "IF", que me lo
> reescribiera con las frecuencias sacadas de la función table.
>
> Un saludo,
>
> Pablo
>
>
> ************************* AVISO LEGAL *************************
> Este mensaje electrónico está dirigido exclusivamente a sus
> destinatarios,
> pudiendo contener documentos anexos de carácter privado y
> confidencial.
> Si por error, ha recibido este mensaje y no se encuentra entre los
> destinatarios, por favor, no use, informe, distribuya, imprima o
> copie su
> contenido por ningún medio. Le rogamos lo comunique al remitente y
> borre
> completamente el mensaje y sus anexos. El Instituto de Salud Carlos
> III no
> asume ningún tipo de responsabilidad legal por el contenido de este
> mensaje
> cuando no responda a las funciones atribuidas al remitente del mismo
> por la
> normativa vigente.
>
> [[alternative HTML version deleted]]

_______________________________________________
R-help-es mailing list
R-help-es en r-project.org
https://stat.ethz.ch/mailman/listinfo/r-help-es



************************* AVISO LEGAL *************************
Este mensaje electrónico está dirigido exclusivamente a sus destinatarios,
pudiendo contener documentos anexos de carácter privado y confidencial.
Si por error, ha recibido este mensaje y no se encuentra entre los
destinatarios, por favor, no use, informe, distribuya, imprima o copie su
contenido por ningún medio. Le rogamos lo comunique al remitente y borre
completamente el mensaje y sus anexos. El Instituto de Salud Carlos III no
asume ningún tipo de responsabilidad legal por el contenido de este mensaje
cuando no responda a las funciones atribuidas al remitente del mismo por la
normativa vigente.

[[alternative HTML version deleted]]







_______________________________________________
R-help-es mailing list
R-help-es en r-project.org
https://stat.ethz.ch/mailman/listinfo/r-help-es



Más información sobre la lista de distribución R-help-es