Foro de discusión y soporte para usuarios de R

Un foro abierto a todos los temas relacionados con R que quiera.
Nota: Una url estable a este foro es https://knuth.uca.es/R-foro.

Ayuda con R

de Oscar Viera -

Estoy aprendiendo a usar a R mediante unos videocursos, no se si el problema soy yo pero la verdad me mandaron a hacer unos prácticos y no entiendo nada, alguien podría explicarme como hacer esto paso a paso por favor, muchas gracias

La biblioteca de R mclust contiene un conjunto de datos llamado banknote. Los datos corresponden a
medidas físicas (ancho, longitud, etc) de 200 billetes Suizos, donde 100 de los mismos son falsificaciones y 100
son verdaderos. La variable Status es un factor que indica si el billete es real (genuine) o falso (counterfeit).

1. Cargar los datos. Instale y cargue la biblioteca mclust, luego con el comando data(banknote)
los datos quedan disponibles para trabajar. Puedes confirmar que tienes los datos haciendo
head(banknote).

2. Transforma la variable Status en un factor, con niveles “falso” y “genuino”

3. Descripción global. Utiliza alguna función para inspeccionar globalmente los datos. Comenta los
resultados: describe alguna de las características básicas y destaca si hay aspectos que te llaman la
atención.

4. Calcula una nueva variable que sea la diferencia entre Left y Right y obtiene su desvío típico
SIN utilizar la funciones var() ni sd()

5. Histogramas. Usando ggplot2 dibuja un histograma de alguna de las dimensiones físicas de los
billetes que permitan ver diferencias entre los genuinos y los falsos. Mapea la variable Status a fill
para apreciar las diferencias, utiliza los argumentos del histograma (ej: bins o binwidth) para asegurar
que no haya huecos en el medio del histograma. Para el gráfico seleccionado: (1) explica la estructura
del gráfico, ¿que tipo de gráfico es? ¿que datos se mapean a que elementos estéticos ?. (2) ¿Cual es el
mensaje principal del gráfico?

6. Diagramas de dispersión (). Usando ggplot2 encuentra un diagrama de dispersión con dos de
las medidas numéricas de los billetes. Mapea la variable Y al color de los puntos. Asegurarte de elegir
dos variables que separen completamente los casos falsos de los genuinos. Para el gráfico seleccionado,
(1) explica la estructura del gráfico, ¿que tipo de gráfico es? ¿que datos se mapean a que elementos
estéticos ?. (2) ¿Cual es el mensaje principal del gráfico?

7. Mostrar histogramas de todas las variables en un solo gráfico. Primero debemos estructurar
los datos con reshape. En primer lugar ejecuta el siguiente código:
colnames(banknote)[2:7] <- paste0('md.', colnames(banknote)[2:7])

Luego utiliza reshape para estructurar los datos en formato long. Recuerda que las variables que varying
son las medidas físicas. Una vez que los datos están en formado long, dibuja el histograma del punto 4,
coloreando Status (como en el punto 4) y dejando paneles separados para cada medida. Es probable que
debas fijar scales='free' dentro de facet.

Filtrar datos a partir de una lista

de Enrique Sandoval -

Hola, quiero saber como puedo seleccionar datos (filas) de una base a partir de la información que tengo en una lista. Por ejemplo, tengo una base con 50000 filas y 10 variables (columnas), entonces quiero seleccionar todas aquellas filas que coincidan con una lista que tengo aparte, digamos de 250 datos. 

Por ejemplo, tengo la guía telefónica y quiero seleccionar de ella todos los contactos de mi agenda, para de esta manera tener otras infomaciones como ser dirección, nombre, etc (solo a modo de ejemplo)

Gracias

Sumar filas de acuerdo al valor de una columna manteniendo todas las columnas- Rstudio

de Nicolas Aliano -

Hola! Soy un poco nuevo en el mundo R y me esta costando realizar ciertas operaciones.

 

Tengo un dataframe con 15 columnas aproximadamente, de las cuales 7 tienen valores numericos y las restantes son variables como, nombre, edad, ID, etc. Dado que la variable DNI se repite muchas veces en todas las filas, estoy intentando sumar cada una de las variables numericas de acuerdo al ID. Es decir, si me aparece 10 veces el ID XX, mi idea es que las filas de cada una de las columnas que tienen variables numericas se sumen y el ID XX aparezca una sola vez con la suma de todas esas variables.  Ademas de esto, me gustaria que me conserve los valores de las restantes columnas que no se suman, ya que me permiten identificar cada caso. Intente utilizando la función  aggregate(Df, by=list) y si bien me suma todo, no me conserva las columnas "que no entran en la suma de las filas".

 

Basicamente seria como en el excel tener un subtotal que se calcule al filtrar por el ID.

 

Espero haber sido claro. 

 

Desde ya agradezco por adelantado.

 

Saludos

Marcas:

Ayuda con R

de Sergio García -

Hola, estoy iniciándome en RStudio y tengo que realizar un ejercicio pero ando bastante perdido.

Dispongo de un dataframe de 2 variables: 1 columna de id del paciente y 1 columna de síntomas.

AL hacer un summary me agrupa los síntomas en función del número de veces que se repite. Me gustaría sacar una gráfica de este dato pero no se como hacerlo.

PatientID                Symptom    

 Min.   :   1   Sarcopenia      :4528  

 1st Qu.:2523   Obesity         :3097  

 Median :5035   Muscle_Weakness :1350  

 Mean   :4944   Muscular_Atrophy: 983  

 3rd Qu.:7358   Inflammation    : 815  

 Max.   :9684   Malnutrition    : 753  



                (Other)         :7434  

Alguien podría ayudarme?

Unir gráficas de dos curvas nls

de Carlos Mínguez -

Hola.

Tengo dos bases de datos que valoran las veces que rumia una vaca con calor (Q1) y sin calor (Q4).

Genero el mismo modelo sinoidal:

mod.RumiQ1 <-nls(Rumination ~ a + b*sin(c*Hour-d)+e*cos(f*Hour-g),data=datosQ1,start=list(a =23.5, b = 6, c=3.1, d=9, e=-2.5, f=0.8,g=1))
co<-coef(mod.RumiQ1 )
co
#co
 #      a        b        c        d        e        f        g
#23.13338 -4.33017  0.33730 97.53357 -5.14952  0.50374 -1.82722

Y lo dibujo con :

ggplot(datosQ1, aes(x=Hour, y=Rumination))+
 # geom_point()+
 geom_smooth(method="nls", se=FALSE,
              method.args=list(formula=y~ a + b*sin(c*x-d)+e*cos(f*x-g),
                               start=c(a=23.13338,b= -4.33017,c=  0.33730,d= 97.53357,e= -5.14952,  f=0.50374, g= -1.82722 )) )


Ahora utilizo los datos Q4 :

mod.RumiQ4 <-nls(Rumination ~ a + b*sin(c*Hour-d)+e*cos(f*Hour-g),data=datosQ4,start=list(a =22, b = 5, c=3, d=9, e=-3.3, f=1,g=1.5))
co<-coef(mod.RumiQ4 )
co
#        a         b         c         d         e         f         g
 #22.03420   0.88497   1.89659 -11.66763  -3.35122   1.08926   3.51036

Y lo dibujo con:

ggplot(datosQ4,
aes(x=Hour, y=Rumination))+
 # geom_point()+
 geom_smooth(method="nls", se=FALSE,
              method.args=list(formula=y~ a + b*sin(c*x-d)+e*cos(f*x-g),
                               start=c(a=22.03,b= 0.88,c=  1.89,d= -11,e= -3,  f=1.00, g= 3.51)) )

Me gustaría tener las dos curvas en el mismo dibujo para poder comparar las gráficas

¿Cómo lo hago?

Gracias !!!!


¿Como generar un grafico diferenciando entre distintos colores por ejemplo: Machos y hembras?

de Loreto Muñoz -

Saludos!

Es mi primer post en este foro, y quizás es una duda muy básica y ni siquiera se si la estoy haciendo en el apartado correcto, pero aquí va:

Contexto digamos que estamos hablando de utilizar R para la biología. ¿Cómo puedo generar un grafico considerando como variable independiente la edad, y variable dependiente el peso de una especia animal, diferenciando en distintos colores hembras y machos?

Quedo atenta a sus comentarios.

Error en instalacion paquetes R Studio

de H EM -

Hola, he instalado R Studio y me estoy iniciando, he intentando instalar paquetes , por ejemplo :

 

install.packages("plotly")

Pero me aparecen diversos mensajes de error, de este estilo:

Warning in install.packages :
installation of package ‘farver’ had non-zero exit status

 

He leido que esto significa que tendria que instalar aparte estos paquetes en Ubuntu, pero al intentarlo me dice que o bien ya están instalados o no los encuentra. No se qué tendría que hacer, muchas gracias

Filtrado de valores en capa SHP

de Lander Sánchez -

Buenos días a todos y gracias de antemano.

Tengo un problema a la hora de filtrar una columna en una capa shp. Al realizar la función "summary" me indica que el mínimo es 0 y el máximo 23, sin embargo, cuando aplico un filtro, dice que los valores de dos cifras son inferiores a los de una, esto es, los ordena de 0 a 9, pero a partir del 10 los coge como si fueran decimales (creo) y los cuenta como valores inferiores a 2. De esta forma, cuando aplico, por ejemplo, un filtro (x>="5" & x<="10) no me filtra ningún valor, porque entiende que el 10 es menor que el 5.

Con un filtro entre 5 y 9 por ejemplo sí me lo ejecuta. La columna tiene formato "integer"; he probado a cambiarlo con as.float y as.numeric, pero sigue dándome el mismo error.

Nuevamente, gracias

Distancia mínima entre coordenadas. Cómo asignar las coordenadas más cercanas

de Francisco Javier -
Hola, estoy tratando de crear un bucle usando "for" para calcular las distancias mínimas entre puntos (en coordenadas Latitud - Longitud) en dos marcos de datos

En mi caso, tengo un marco de datos1 con más de 1,000 puntos y otro (marco de datos2) con más de 10,000 puntos, y necesito asignar los puntos más cercanos en el marco de datos2 a cada punto en el marco de datos1

La distancia entre dos puntos se calcula mediante la fórmula:

Este es un ejemplo de marcos de datos con coordenadas:

coordenadas1 <- data.frame ("X1" = c (70,10,50), "Y1" = c (20,5,60))

coordenadas2 <- data.frame ("X2" = c (1,2,45,7,8,5,4,13,3,6), "Y2" = c (2,5,36,4,3, 2,6,27,9,8))

¿Alguien podría ayudarme a solucionarlo? Muchas gracias por adelantado
Saludos, Javi