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.

Función simple

de Samuel Naranjo De Zulategi -
Hola estoy tratando de resolver el siguiente ejercicio:

Escriba una función que tome como argumentos un vector numérico y su nombre (imagine que el vector numérico es una variable) y que como resultado regrese el valor mínimo, máximo, promedio y la desviación estándar en una línea de texto de la siguiente manera:: “El valor promedio de la variable XX es XX, su valor mínimo es igual a XX, su valor máximo es igual a XX y tiene una desviación estándar de XX” cuando el contenido de la matriz es numérico. Si el vector no es numérico deberá aparecer una línea de texto que diga: “La variable XX no es numérica”.

Hasta ahora he hecho lo siguiente, sin embargo, no me funciona (alguien tiene alguna idea?):

estadisticas_descriptivas<-function(x){

  promedio<-mean(x)

  maximo<-max(x)

  minimo<-min(x)

  desviacion<-sd(x)

  if (is.numeric(x)==T){paste("El valor promedio de la variable",x, "es",promedio<-mean(x), "su valor mínimo

                               es igual a",minimo<-min(x), "su valor máximo es igual a", maximo<-max(x), "y tiene una desviación estándar

                               de", desviacion<-sd(x))} else {paste("La variable",x, "no es numérica")}

}


Marcas:

Informes parametrizados con R Markdown

de Gabi Granados -

Buenos días,

Estoy intentando generar con R Markdown el primer capítulo de una publicación para varios años (2017, 2018 y 2019). Lo que quiero es generar los informes capitulo1-2017.pdf, capitulo1-2018.pdf y capitulo1-2019.pdf.

En la cabecera YAML de mi archivo (capitulo1.Rmd) he puesto el siguiente código:

params:
  year:
    label: "Año de la publicación"
    value: 2018
    input: select
    choices: [2017, 2018, 2019]

y después, en el mismo archivo (capitulo1.Rmd, he incluido la función render:

```{r include=FALSE}
library(rmarkdown)
render_capitulo = function(year){
  rmarkdown::render("capitulo1.Rmd",
    output_file = paste0 ('capitulo1-', year)
  )
}
```

La cosa es que no me funciona. El informe que me genera se llama capitulo1.pdf.

Muchas gracias de antemano.

Analisis multivariante usando StatR

de David Romero -

Buenas noches, estoy intentado realizar un análisis multivariante por componentes con los datos de mi proyecto de investigación por medio del Software Rwizard, el problema aquí es que al ejecutar el siguiente script:

"data<-read.csv2("C:/Users/Sebastian/Desktop/Trabajos/Tesis/excel resultados tesis/CSV FINALES/Multivariante - copia.csv",header=TRUE,encoding="latin1")
XIII2(data = data , var = c("Semana","Precipitacion","Volumen.Lineal","Volumen.Arboreo") , cat = "Mes" , ellipse = TRUE , VIF = TRUE)"

sale el siguiente mensaje en la consola:

"Error in cor(r, use = pairwise) : 'x' is empty"

Realmente ya no sé como solucionar este inconveniente ya que llevó usando R solo un par de semanas y sé más bien poco de programación del mismo o que procedimientos tener en cuenta cuando hay errores, agradecería alguien que pueda explicarme como debo proceder para poder obtener los datos que necesito.

Pdta: Los datos los tengo guardados en un archivo con extensión .csv

Nowcasting

de Camilo Arboleda -

Buen día a todos, hace poco estaba trabajando con modelos de Nowcasting, estos modelos tienen como input muchas series de tiempo. Quiero hacer una estimación del PIB, mi pregunta es sobre el funcionamiento del paquete Nowcasting en R. Este paquete hace uso del filtro de Kalman, como indica la teoría que  debería hacerse. También me gustaría saber que hace con las series que no son estacionarias. Yo planeaba estacionalizar todas las series y luego aplicar el nowcasting. Gracias

Dibujar matriz temperatura.

de Yurena Hernández -


Hola, tengo un archivo NetCDF (extensión .nc) donde se recogen datos de temperatura y donde la longitud viene de 0 a 360.

Usando la librería "raster" he conseguido representar el Índico y Pacífico. Pero el problema aparece al representar el Atlántico puesto que la longitud a tomar va de 250 a 40 (o lo que es lo mismo, de 250 a 360 y de 0 a 40).
He intentado con varias siguientes síntasis, pero no consigo el resultado deseado.
Me pareció que esta síntesis era la más cuerda, es decir, sumar 40 a 360, pero sólo me plotea hasta 360. Cosa lógica ya que los datos sólo llegan a 360.
plot(variable,col=rainbow(1000),main="Sea Surface Temperature (Atlantic Ocean)",xlab="Longitude",ylab="Latitude",xlim=c(250,400),ylim=c(-90,90),asp=0)

Otra opción que he pensado es crear antes una matriz extrayendo los datos del Atlántico y luego representarla. Pero parece que la función plot no sirve para dibujar estos mapas y con la función image me cambia las unidades de los ejes y voltea el dibujo.

Alguien me podría ayudar de alguna forma?. Ya sea con la síntasis de plot o con otra que me muestre los valores de longitud y latitud sin modificar?.

Regresión múltiple

de Silvina Ale -

Hola,tengo el sgte problema. Necesito hacer regresión múltiple en R. El tema es que el resultado sale NA , a la tabla no le faltan datos. Utilice la función is.na para la data.frame, salen todas las variables FALSE en todas las filas,por lo que averigue eso quiere decir que no hay datos NA. Hay 3 columnas que me dan NA a las cuales les hago el is.na a cada una Y dan. FALSE. También opté ppr omitir éstas 3 columnas, e igual sale el p:NA Y r2ajustado: NAN. Probé la función na.omit. el resultado es el mismo. Ayuda por favor

AFC con Lavaan

de David Sánchez Oliva -

Hola, 

he realizado un AFC mediante Lavaan a través del siguiente comando:

modelo4 <- 'Intrinseca =~ M1 + M6 + M11 + M16
Identificada =~ M2 + M7 + M12 + M17
Introyectada =~ M3 + M8 + M13 + M18
Externa =~ M4 + M9 + M14 + M19
Desmotivacion =~ M5 + M10 + M15 + M20
Autonoma =~ Intrinseca + Identificada
Controlada =~ Introyectada + Externa'
fit <- cfa(modelo4, data = datos)
summary(fit, fit.measures = TRUE, standardized=TRUE)

El resultado se muestra en la siguiente figura:

Como se puede apreciar, en dos casos, el peso de regresión es superior a 1, y como conscuencia, tienen una varianza negativa.

¿Cuál puede ser error? y en todo caso, ¿Cómo se podría solventar?

Muchas gracias.

¿cómo insertar el valor en una columna si se cumpre una condición en R?

de Osvaldo Rama -

Espero me puedan ayudar con el siguiente problema por favor en R.

Tengo una tabla 1 de codigos y referencias, ej. auto = automovil, bici = bicicleta, moto = motocicleta.

Y tengo otra tabla 2 que tiene más filas con más codigos (ej. auto, auto, bici, moto, moto, bic, auto, auto) pero sin referencias.

Mi problema es que no se como agregar las referencias de la tabla 1 (automovil, bicicleta, motocicleta) a todos los codigos de la tabla 2

Para que mi resultado sea en la tabla 2: ej. auto = automovil, auto = automovil, bici = bicicleta, moto = motocicleta, moto = motocicleta, etc..



Anovas

de borja aramburu munoa -

Hola!

Que tipo de estudio de suposiciones básicas para llevar a cabo una Anova debería hacer en una base de datos con número de muestras mayor a 50? (he leído que cuando la cantidad se excede de 50 shapiro ya no es fiable) Gracias!!

Join de dos marco de datos

de Marlon Pabón -

Tengo el siguiente inconveniente: tengo dos dataframes con la misma estructura (variables) de dos trimestres diferentes, de reportes de gastos de entidades, la cuestión está en que en el siguiente trimestre reporta un mayor número de entidades que el trimestre anterior (el número de filas se incrementa cada trimestre) pero debo hacer un ejercicio tipo panel en donde tenga los registros trimestrales de todo un año solo con las entidades que reportan cada trimestre.

En mi caso son 41.000 registros del primer trimestre  y 45.000 del segundo semestre, el resultado que espero es un panel de dos trimestres con 41000 filas, pero al hacer los join me resultan muchas más. Lo único que necesito es agregar una sola columna de valores del segundo semestre

Quisiera saber como hacer un join que me resulte en un data frame de solo 41000 filas que me traiga los valores del segundo semestre de una sola variable. Gracias