Hola Patricio,

Quizas podria servirte lo siguiente:

# datos
datos <- structure(list(grupo = 5:18, frecuencia = c(1L, 1L, 3L, 2L, 5L,
20L, 20L, 31L, 39L, 54L, 66L, 54L, 23L, 12L)), .Names = c("grupo",
"frecuencia"), class = "data.frame", row.names = c("5", "6",
"7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17",
"18"))

# funcion
foo <- function(edad, d){
    res <- with(d, match(edad, grupo))
    ifelse(is.na(res), 0, unlist(d[res, 2]))
}

# ejemplos
foo(6, datos)
#[1] 1
foo(18, datos)
#[1] 12
foo(99, datos)
#[1] 0

Un saludo,
Jorge.-


2012/3/1 <>

> 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@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@isciii.es> wrote:
> > Hola a tod@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@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@r-project.org
> https://stat.ethz.ch/mailman/listinfo/r-help-es
>
>

	[[alternative HTML version deleted]]

