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)))))
Pero: Lo mejor es olvidarse de attach() y usar with()
Kjetil
Lo último que hacer es enseñar a futuros usuarios de usar attach(),
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(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
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
detectase
aquél que fuese un data frame y lo tomase por defecto. Pero no sé
hacerlo.
Todo ello para hacer una función automática un poco para la gente
que
se aclara
demasiado con RCommnader
Finalmente ¿esto se podrÃa programar en RCommander de manera
temo que no viene incluÃda ninguna función para hacer las tÃpicas
frecuencias para variables cuantitativas...
Un saludo
jm~