Skip to content

[R-es] Funcion para una tabla de frecuencias

32 messages · Carlos J. Gil Bellosta, Kjetil Halvorsen, Leonardo Hernández Pérez +9 more

Messages 1–25 of 32

#
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.)
#
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)))))
}

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.
jm~

_______________________________

        J. Miguel Marin

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

    Dep. of Statistics
University Carlos III of Madrid
        Spain (E.U.)
#
Hola,
dándole vueltas, llegué a esta función:

freq <- function(x,datos){
  attach(datos)
  cosaini <- table(cut(x, breaks=nclass.Sturges(x)))
  cosa <- cosaini
  dimnames(cosa) <- NULL
  freq.abs <- cosa[1:length(cosa)]
  freq.rel <- freq.abs/sum(freq.abs)
  freq.cum.rel <- cumsum(freq.rel)
  freq.cum.abs <- cumsum(freq.abs)
list(data.frame(cosaini,freq.rel,freq.cum.abs,freq.cum.rel))
}


Aunque no consigo detectar automáticamente que un objeto de ls() es un 
data.frame y me gustaría programarlo en RCommander.

Disculpad por tanto correo :-/
jm~

_______________________________

        J. Miguel Marin

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

    Dep. of Statistics
University Carlos III of Madrid
        Spain (E.U.)
#
Una posible solucion es utilizar la funcion "hist()" que en definitiva
hace lo que necesitas. Ademas, como es para docencia tendrias
la posibilidad de explicar graficos y tablas de frecuencias
conjuntamente.

Aca va un ejemplo:
[1] "breaks"      "counts"      "intensities" "density"     "mids"
[6] "xname"       "equidist"
[,1] [,2]
[1,]   -5    1
[2,]   -3    3
[3,]   -1   15
[4,]    1   29
[5,]    3   26
[6,]    5   16
[7,]    7    7
[8,]    9    3
Pablo

----- Original Message -----
From: "J. Miguel Marin" <jmmarin en est-econ.uc3m.es>
To: <R-help-es en r-project.org>
Sent: Monday, November 16, 2009 12:12 PM
Subject: [R-es] Funcion para una tabla de frecuencias



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
#
Hola, ¿qué tal?

No sé si te valdría la función "describe" del paquete Hmisc. Por ejemplo:

library( Hmisc )
describe( iris$Species )
describe( iris$Species )$values
describe( iris )

Un saludo,

Carlos J. Gil Bellosta
http://www.datanalytics.com
#
2009/11/16 J. Miguel Marin <jmmarin en est-econ.uc3m.es>:
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

  
    
#
Respono yo mismo, para eludivar cuan "evil" es attach()

2009/11/16 Kjetil Halvorsen <kjetil1001 en gmail.com>:
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:
detach(cosa)
     ans
Pero: Lo mejor es olvidarse de attach() y usar with()

Kjetil

  
    
#
Hola colegas: Acabo de instalar R sobre Ubuntu y no encuentro la forma 
de ejecutarlo, no me ha creado un lanzador en ningún lugar, en verdad no 
estoy muy relacionado ni con Ubuntu ni con R, Necesito saber como 
ejecutarlo.

Saludos,

Leonardo
#
escribe R (mayúscula) en un terminal (está en accesorios). El entorno
de trabajo te lo guarda, si quieres, en la capeta en la que te
encuentres. Saludos, Javier

El día 16 de noviembre de 2009 15:17, Leonardo Hernández Pérez
<leonardo.hernandez en etecsa.cu> escribió:
#
javier ha explicado que R es una aplicación de consola,
pero usarlo solo de un terminal de unix no sería muy comodo
paro otro uso que trabajos muy simples. Existen muchos GUI's para,
simples, comp?icados, en varios estados de desarrollo. Una lista esta en  la
página
http://www.sciviews.org/_rgui/
una posibilidad, un gui que esta empaquetado para ububtu, es
RKward. abre synaptic (package manager) y instale
rkward (solo minusculas).
Existen muchas otras posibilidades. Cuentanos si te gusta rkward!

Yo no uso rkward, nunca lo he instalado. Yo, en ububtu, compila
R desde codigo fuente (para tener últimas versiones)
y corre R desde emacs, usando ess (se puede instalar desde synaptic:,
también)

Kjetil

2009/11/16 Javier Martinez <javi.martinez.lopez en gmail.com>:

  
    
#
Hola Leonardo.

Cuando hablas de que has instalado R en Ubuntu supongo que te referirás a que los has instalado desde el gestor de paquetes   (porque también se puede instar a "a mano").

Ubuntu trae, por defecto, activados unos repositorios de software. Ahí puedes encontrar R e instalarlo (y varios de los packages del CRAN) aunque yo te recomiendo que añadas manualmente el repositorio "deb http://crans.es.r-project.org/bin/linux/ubuntu karmic/" (sin las comillas) para que lea directamente del mirror español de R-Project y tengas una versión actualizada de R (y muchos más packages disponibles). Entre esos packages se encuentra Rcommander, que es el GUI que te recomiendo utilizar.

Además de este GUI, existe uno más integrado con KDE que se llama RkWard... Pero no te lo recomiendo porque da algunos problemmillas con las últimas versiones de R (aunque están en ello e igual ya lo han solucionado).

Como he comentado en alguna ocasión, hemos preparado una distro de Linux basada en Ubuntu (con KDE), llamada EpiLinux (www.galiciasaude.es/dxsp), que ya trae todo esto implementado (es una distro para bioestadística y estudios de salud).
Enlace de descarga: www.galiciasaude.es/epilinux
Nosotros, en un principio habíamos apostado por RkWard pero, al final, optamos por Rcommander.

Una vez instalado, lanzar el programa es tan sencillo como ir al menú y buscar el icono de "R".

En caso de que lo hayas instalado "a mano", simplemente abre una ventana de terminal y pon "R" (sin las comillas).

Espero haberte ayudado.

Un Saludo,
Miguel.



-----Mensaje original-----
De: r-help-es-bounces en r-project.org [mailto:r-help-es-bounces en r-project.org] En nombre de Leonardo Hernández Pérez
Enviado el: lunes, 16 de noviembre de 2009 21:17
CC: r-help-es en r-project.org
Asunto: [R-es] R en Ubuntu


Hola colegas: Acabo de instalar R sobre Ubuntu y no encuentro la forma de ejecutarlo, no me ha creado un lanzador en ningún lugar, en verdad no estoy muy relacionado ni con Ubuntu ni con R, Necesito saber como ejecutarlo.

Saludos,

Leonardo



Nota: A información contida nesta mensaxe e os seus posibles documentos adxuntos é privada e confidencial e está dirixida únicamente ó seu destinatario/a. Se vostede non é o/a destinatario/a orixinal desta mensaxe, por favor elimínea. A distribución ou copia desta mensaxe non está autorizada. 

Nota: La información contenida en este mensaje y sus posibles documentos adjuntos es privada y confidencial y está dirigida únicamente a su destinatario/a. Si usted no es el/la destinatario/a original de este mensaje, por favor elimínelo. La distribución o copia de este mensaje no está autorizada.

See more languages: http://www.sergas.es/aviso_confidencialidad.htm
#
Hola, ¿qué tal?

Estoy con Kjetil en que el uso de "attach" no debería recomendarse.
Hay que saber que existe (porque se usa en algunos lugares) pero hay
que alojarlo en el mismo lugar de la memoria (del usuario) que
almacena el comando "GOTO".

"attach" no deja de ser un subterfugio para teclear menos ("syntactic sugar").

R tiene estructuras de datos y eso es una ventaja, no un
inconveniente. A los datos atómicos dentro de una estructura de datos
se accede de una manera u otra y la sintaxis en los distintos
lenguajes viene a ser similar.

Creo que lo más honrado y transparente es decir muy claramente:
señores, a la columna "columna1" de la tabla "mi.tabla" se accede así:

mi.tabla$columna1 (o mi.tabla[["columna1"]])

Es un mínimo nivel de complejidad que no se debe escamotear.

Sigue siendo cierto que "with" (y "by", "apply" o "lapply" para
ciertos usos) sigue siendo útil para prolongar la vida de los
teclados.

Un saludo,

Carlos J. Gil Bellosta
http://www.datanalytics.com
#
Hola colegas:

No había tenido oportunidad para responder, a todos gracias por sus 
respuestas, en estos momentos estoy probando todas las opciones que me 
brindaron, les comentaré los resultados y más adelante les estaré 
haciendo otras preguntas relacionadas con el tema, un abrazo a todos.

Saludos,

Leonardo



miguel.angel.rodriguez.muinos en sergas.es escribió:
------------ próxima parte ------------
An embedded and charset-unspecified text was scrubbed...
Name: no disponible
URL: <https://stat.ethz.ch/pipermail/r-help-es/attachments/20091117/daab31fb/attachment.pl>
#
Saludos Leonardo:

El ambiente en donde trabajo el R es en Ubuntu, y
lo he instalado "a mano", es decir que lo he compilado
desde el archivo fuente.

Se requiere un poco de paciencia para agregar todos
los componentes ".dev" que se necesitan para que trabaje
con todas sus ventajas.

También utilizo el Rkward (también compilo la última version 0.5.2 y
requiere otros componentes adicionales),
y hasta ahora me ha funcionado bien con la version 2.10.0 patched del R.

Espero poder resolver dudas que te puedan surgir en
la experiencia del R en el entorno Ubuntu.

Feliz día.


El mar, 17-11-2009 a las 16:21 -0500, Leonardo Hernández Pérez escribió:
1 day later
#
Hola Leonardo:
RCommander es un paquete para R. Debes cargarlo como cargas cualquier
paquete en R
library(RCommander) #No recuerdo si las mayúsculas están bien pero
sino cámbialo por minúsculas.

Respecto a lo otro no tengo idea.
Saludos
Luciano



El día 19 de noviembre de 2009 12:26, Leonardo Hernández Pérez
<leonardo.hernandez en etecsa.cu> escribió:
#
Hola, ¿qué tal?

"apt" gestiona las prioridades a la hora de instalar paquetes cuando
están presentes en varios repositorios. Hay formas de priorizar unas
fuentes sobre otras. Creo que la política por defecto cuando no se
establecen (a mano) tal tipo de prioridades es la de cargar el paquete
más actual.

Durante casi todo el tiempo, las fuentes de los repositorios de CRAN y
los de Ubuntu coinciden. Sólo es durante una ventana de tiempo que las
fuentes de CRAN pueden disponer de una versión más reciente que las de
Ubuntu.

En el peor de los casos, siempre puedes consultar qué versión de cada
paquete están disponibles en uno y otro de los repositorios.

Un saludo,

Carlos J. Gil Bellosta
http://www.datanalytics.com
#
Hola Leonardo.

Entiendo que has añadido ese repositorio y actualizado la lista de paquetes. Si cargas algún gestor gráfico (tipo Synaptics o similar) te aparecerán (aunque algunos de ellos ya estaban con los repositorios por defecto de Ubuntu) una serie de paquetes llamados "r-base.loquesea" y "r-cran.loquesea". El primero es R y los demás son packages instalables (uno de ellos el r-cran-rcmdr (creo recordar que se llama así). Seleccionando lo que te interesa instalar (r-base es primordial) tendrás R instalado en el sistema y el conjunto de packages adicionales que necesites. Una vez terminada la instalación, te aparece un icono de acceso directo en el menú (la ubicación dependerá del GUI que uses). El Rcommander tienes que lanzarlo desde dentro de R (una vez cargado) con library(Rcmdr). Si quieres que cargue automáticamente al iniciar R, simplemente edita el fichero Rprofile.site (de la carpeta etc, centro de la carpeta de instalación de R) y añádele al final la instrucción "library(Rcmdr)" (sin las comillas, of course).

Un Saludo,
Miguel.


-----Mensaje original-----
De: r-help-es-bounces en r-project.org [mailto:r-help-es-bounces en r-project.org] En nombre de Leonardo Hernández Pérez
Enviado el: jueves, 19 de noviembre de 2009 16:27
Para: r-help-es en r-project.org
Asunto: Re: [R-es] R en Ubuntu

Hola Colegas:

Ahora tengo otras dudas.

Instalé Rkward, sin problemas, me ha trabajado bien, y me aparece un lanzador sin problemas.
Instalé Rcommander desde la consola pero no me aparece ningún lanzador ¿Que debo hacer para ejecutarlo?
Añadí a sources.list  # deb
http://cran.es.r-project.org/bin/linux/ubuntu karmic/, actualicé pero no vi nada que hablara de R en el proceso de actualización, ¿Como puedo comprobar que está tomando las actualizaciones desde esa ubicación?

Un saludo a todos,

Leonardo



Nota: A información contida nesta mensaxe e os seus posibles documentos adxuntos é privada e confidencial e está dirixida únicamente ó seu destinatario/a. Se vostede non é o/a destinatario/a orixinal desta mensaxe, por favor elimínea. A distribución ou copia desta mensaxe non está autorizada. 

Nota: La información contenida en este mensaje y sus posibles documentos adjuntos es privada y confidencial y está dirigida únicamente a su destinatario/a. Si usted no es el/la destinatario/a original de este mensaje, por favor elimínelo. La distribución o copia de este mensaje no está autorizada.

See more languages: http://www.sergas.es/aviso_confidencialidad.htm 

XACOBEO 2010: http://www.xacobeo.org
#
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
jm~

_______________________________

        J. Miguel Marin

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

    Dep. of Statistics
University Carlos III of Madrid
        Spain (E.U.)
#
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
función
objetos,
cómo
asequible?
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
#
Hola,

Acabo de empezar a trabajar con R.

¿Me podríais recomendar algún texto en el que esté explicado cómo trabajar 
con gráficos?

Mi problema es que cuando guardo una gráfica desde la ventana en formato 
postscript las letras griegas que he incluido con expression en la leyendas 
de los ejes no se guardan como tales. Por ejemplo, en vez de la letra chi 
aparece una c.

Gracias de antemano,

Beatriz Lacruz Casaucau
______________________________________________________

Universidad de Zaragoza
Departamento de Métodos Estadísticos
Edificio de Matemáticas, 3ª planta
Pedro Cerbuna, 12
50009 Zaragoza (Spain)

Tel. 976 76 10 00 Ext. 3245
Fax. 976 76 11 15

http://metodosestadisticos.unizar.es/personales/lacruz/
______________________________________________________
----- Original Message ----- 
From: "Pablo Emilio Verde" <PabloEmilio.Verde en uni-duesseldorf.de>
To: "J. Miguel Marin" <jmmarin en est-econ.uc3m.es>; <r-help-es en r-project.org>
Sent: Friday, November 20, 2009 1:48 PM
Subject: Re: [R-es] Funcion para una tabla de frecuencias
#
Hola Miguel Angel:

Gracias por tu ayuda, funciona perfecto, solo me costó un poco de 
trabajo encontrar el fichero "profile", su ubicación es 
"/usr/lib/R/library/base/R"

Un saludo a todos,

Leonardo


miguel.angel.rodriguez.muinos en sergas.es escribió:
------------ próxima parte ------------
An embedded and charset-unspecified text was scrubbed...
Name: no disponible
URL: <https://stat.ethz.ch/pipermail/r-help-es/attachments/20091120/125825cb/attachment.pl>
#
plot( 1:10, 1:10, xlab = expression("Esto es"~chi) )


El día 20 de noviembre de 2009 14:13, Beatriz Lacruz
<lacruz en unizar.es> escribió: