[R-es] Funcion para una tabla de frecuencias

Pablo Emilio Verde PabloEmilio.Verde en uni-duesseldorf.de
Vie Nov 20 13:48:17 CET 2009


Hola,

Si, el tema es fundamental para las clases de estadistica introductoria.

Algo que note es lo siguiente, la funcion "graph.freq()" del paquete
"agricolae" es la funcion "hist()" del paquete "graphics" standard.
Exactamente la misma! La funcion "table.freq()" te agrega la tabla
que necesitabas.

Podes probar:

library(agricolae)
set.seed(123)
  x <- rnorm(100, mean = 2, sd=1)
tmp <- hist(x, plot=FALSE)
table.freq(tmp)

Como tema marginal salio la discusion del uso de "with()" o "attach()".
Indudablemente, ni uno ni otro es mejor, ni uno ni otro es arcaico. Entiendo
que, si deberian estar en desuso, entonces no formarian parte del sistema.

El tema pasa, por el contexto en el que se utiilzan. Claramente, si
necesitamos
la asignacion de un data.frame en forma global utilizanos "attach()". De lo
contrario si la asignacion es local "with()" es mas efectivo.

El peligro de utilizar "attach()" en forma indescriminada, es que se pueden
enmascarar variables que no necesitamos en un analisis y entiendo que R
no siempre nos avisa! Asi que su uso requiere de mas cuidado y el uso
conjunto de "detach()".

Cuando hago un analisis de datos de mucha responsabilidad, no utilizo
ni uno ni otro. Para mi, lo mas importante es que el uso de variables sea
absolutamente explicito y uso "$". No es muy elegante, pero almenos es
una decision "mini-max".

Pablo















----- Original Message -----
From: "J. Miguel Marin" <jmmarin en est-econ.uc3m.es>
To: <r-help-es en r-project.org>
Sent: Friday, November 20, 2009 11:57 AM
Subject: Re: [R-es] Funcion para una tabla de frecuencias


Hola,

muchas gracias por vuestra ayuda.
Quizás lo que dice Teresa es lo que mejor se adapta a lo que yo
buscaba: tablas introductorias como aparecen en los textos básicos y
que suelen recoger los programas comerciales como opciones inmediatas.

También eran muy interesantes los consejos sobre programación aunque mi
idea era tratar de introducir el R de una manera competitiva respecto a
los programas comerciales, aunque eso implique tomar opciones menos
ortodoxas.

Un saludo

> Hola, yo te respondo sobre las tablas de frecuencia: en la libreria
> agricolae hay una función muy simple que hace las tablas como se suelen
> enseñar en los cursos introductorios, ademas podes asociarle facilmente el
> histograma correspondiente, acá va del ejemplo del paquete:
>
>
> library(agricolae)
> data(growth)
> attach(growth)
> h2<-graph.freq(height,plot=FALSE)
> table.freq(h2)
>
>
> saludos, teresa
>
>
> El 16 de noviembre de 2009 16:25, Kjetil Halvorsen
> <kjetil1001 en gmail.com>escribió:
>
>> Respono yo mismo, para eludivar cuan "evil" es attach()
>>
>> 2009/11/16 Kjetil Halvorsen <kjetil1001 en gmail.com>:
>> > 2009/11/16 J. Miguel Marin <jmmarin en est-econ.uc3m.es>:
>> >> Bueno,
>> >>
>> >> obviamente, la solución inmediata es poner attach(dataframe)
>> >>
>> >> es decir,
>> >>
>> >> freq <- function(x,cosa){
>> >> attach(cosa)
>> >> list(data.frame(table(cut(x, breaks=nclass.Sturges(x)))))
>> >> }
>>
>> despues de usar freq(y, cosa)
>> una vez, una copia de cosa esta en la lista de busqueda (tipea
>> search() para verlo)
>>
>> despues de llamar freq(y2, cosa, dos copias de cosa ... tipea serch()
>> para ver!
>> despues de usarlo la tercera vez, etc .......
>>
>> Como un mínimo la función tenía que ser definida como esto:
>>
>> >> freq <- function(x,cosa){
>> >> attach(cosa)
>> >> ans <- list(data.frame(table(cut(x, breaks=nclass.Sturges(x)))))
>>     detach(cosa)
>>     ans
>> >> }
>>
>> Pero: Lo mejor es olvidarse de attach() y usar with()
>>
>> Kjetil
>>
>>
>> >>
>> >
>> > Lo último que hacer es enseñar a futuros usuarios de usar attach(),
>> pertenece
>> > a la parte arqueológico de R!
>> > Tienes que usar with():
>> > with(cosa, lo_que_quiere_hacer_con_cosa)
>> > por ejemplo:
>> > en lugar de definir la funcion freq (que en realidad es una versión de
>> with()):
>> > with(cosa, table(x))
>> > o
>> > with(cosa,data.frame(table(cut(x,breaks=nclass.Sturges(x)))))
>> >
>> > with() necesita más propaganda!!!
>> >
>> > Para la pregunta original, talves:
>> > library(Hmisc)  # paquete muy extenso de Frank Harrel
>> > ?describe
>> > example(describe)
>> >
>> > Kjetil
>> >
>> >
>> >> Pero estaría mejor no tener que poner el segundo argumento en la
función
>> si
>> >> eso fuera posible...
>> >> Y mejor aún: incluir un submenú en RCommander.
>> >>
>> >>
>> >>
>> >>>
>> >>> Hola,
>> >>>
>> >>> me gustaría hacer una función que fuera bastante automática (para
>> >>> docencia)
>> >>> y que hiciera tablas de frecuencias.
>> >>>
>> >>> La primera idea que funciona es ésta
>> >>>
>> >>> freq <- function(x){
>> >>> list(data.frame(table(cut(x, breaks=nclass.Sturges(x)))))
>> >>> }
>> >>>
>> >>> Sin embarg,o hay que poner (en general) en x algo así como
>> >>> el_dataframe$x
>> >>> para que funcione y la gente se lía si les dices que lo pongan así.
>> >>>
>> >>> Si escribo la función como
>> >>>
>> >>> freq <- function(x,dataframe){
>> >>> list(data.frame(table(cut(dataframe$x,
>> >>> breaks=nclass.Sturges(dataframe$x)))))
>> >>> }
>> >>>
>> >>> NO funciona con una tabla de datos dada.
>> >>>
>> >>> Por otro lado, también estaría bien que si se hace un ls() de
objetos,
>> >>> detectase
>> >>> aquél que fuese un data frame y lo tomase por defecto. Pero no sé
cómo
>> >>> hacerlo.
>> >>>
>> >>> Todo ello para hacer una función automática un poco para la gente que
>> no
>> >>> se aclara
>> >>> demasiado con RCommnader
>> >>>
>> >>> Finalmente ¿esto se podría programar en RCommander de manera
asequible?
>> Me
>> >>> temo que no viene incluída ninguna función para hacer las típicas
>> tablas de
>> >>> frecuencias para variables cuantitativas...
>> >>>
>> >>> Un saludo
>> >>>
>> >>>
>> >>> jm~
>> >>>
>> >>> _______________________________
>> >>>
>> >>>       J. Miguel Marin
>> >>>
>> >>> http://www.est.uc3m.es/jmmarin
>> >>>
>> >>>   Dep. of Statistics
>> >>> University Carlos III of Madrid
>> >>>       Spain (E.U.)
>> >>>
>> >>> _______________________________________________
>> >>> R-help-es mailing list
>> >>> R-help-es en r-project.org
>> >>> https://stat.ethz.ch/mailman/listinfo/r-help-es
>> >>>
>> >>
>> >>
>> >>
>> >>
>> >> jm~
>> >>
>> >> _______________________________
>> >>
>> >>       J. Miguel Marin
>> >>
>> >> http://www.est.uc3m.es/jmmarin
>> >>
>> >>   Dep. of Statistics
>> >> University Carlos III of Madrid
>> >>       Spain (E.U.)
>>  >>
>> >> _______________________________________________
>> >> R-help-es mailing list
>> >> R-help-es en r-project.org
>> >> https://stat.ethz.ch/mailman/listinfo/r-help-es
>> >>
>> >
>> >
>> >
>> > --
>> > "... an entire human genome would fit on a music CD."
>> >
>> > --- www.thinkgene.com
>> >
>>
>>
>>
>> --
>> "... an entire human genome would fit on a music CD."
>>
>> --- www.thinkgene.com
>>
>> _______________________________________________
>> R-help-es mailing list
>> R-help-es en r-project.org
>> https://stat.ethz.ch/mailman/listinfo/r-help-es
>>
>
>
>
> --
> Ing. Agr. M.Sc.Teresa Boca
> Instituto de Clima y Agua INTA Castelar.
> Las Cabañas y Los Reseros s/n°
> 1712 Castelar Pcia de Buenos Aires, Argentina
> Cel: 01115-3572-9584
> Tel: (54-11)-4621-0125/1684
> Fax:(54-11)-4621-5663
> tboca en cnia.inta.gov.ar
>
> [[alternative HTML version deleted]]
>
>




jm~

_______________________________

        J. Miguel Marin

http://www.est.uc3m.es/jmmarin

    Dep. of Statistics
University Carlos III of Madrid
        Spain (E.U.)

_______________________________________________
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