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.

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

Sacar rendimientos

de Heidy Cortés -

Estoy tratando de sacar los rendimientos a unas acciones, pero cuando intento hacer la matriz de rendimientos no me sale, adicionalmente no puedo hacerlo con varias acciones simultáneamente, alguien me puede colaborar

 

library(readxl)

B_10_Col <- read_excel("C:/Users/hcortes/Desktop/2021/Prueba R/B_10_Col.xlsx")

Precios = B_10_Col

rendimientos= matrix(nrow = 252, ncol = 3)

 

for (j in 2:4) {

    for (i in 1:252) {

      rendimientos [i,j-1] = log(Precios[i,j]/Precios[i+1,j])       

    }

}

 

Modelos con funciones especificas

de Jesus Sanchez Alberola -

Hola a todos, en la ejecución de modelos de regresión con la librería R commander sabrían decirme si es posible introducir modelos con una formulación especifica? 

Me explico, concretamente estaba buscando el modo de ajustar modelos que proceden de bibliográfia con una expresión concreta. Por ejemplo este:

Hm = 1,3+(Ho-1,3)*((1-(EXP(a*d)))/(1-(EXP(a*Do))))

Donde 

Hm es variable dependiente 

Ho y Do variables explicativas

a y d se supone que son coeficientes del modelo y es aqui donde no entiendo la manera de especificar esto en la formulación con R.

Gracias