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.

Error en numSummary

de Angel Pascual Asura -

La instrucción: numSummary(Problema4[,"Puntuación"], groups=Problema4$SexoFact, statistics=c("mean", "sd",  "IQR", "quantiles"), quantiles=c(0,.25,.5,.75,1)) devuelve el error: ERROR:'arg' must be NULL or a character vector

Si se elimina la parte desde statistics no da error; hasta ahora me había funcionado y no consigo saber a qué se debe

Dibujar velocidad viento

de Yurena Hernández -
Hola, tengo un archivo .nc con valores de velocidad de viento y debo representarlo para saber la dirección del viento. Pero me faltan los componentes x e y (u y v).
¿Alguna idea por donde empezar a "dibujar"?.
Muchas gracias de antemano. Este foro me ha ayudado a resolver bastantes dudas.

Os dejo un print del archivo:
dimensions:
        lon = 3 ;
        lat = 5 ;
        time = UNLIMITED ; // (96 currently)
variables:
        float lon(lon) ;
                lon:standard_name = "longitude" ;
                lon:long_name = "Longitude" ;
                lon:units = "degrees_east" ;
                lon:axis = "X" ;
        float lat(lat) ;
                lat:standard_name = "latitude" ;
                lat:long_name = "Latitude" ;
                lat:units = "degrees_north" ;
                lat:axis = "Y" ;
        double time(time) ;
                time:standard_name = "time" ;
                time:long_name = "Time" ;
                time:units = "hours since 1800-01-01 00:00:00" ;
                time:calendar = "standard" ;
        float wspd(lon, lat, time) ;
                wspd:long_name = "Monthly Mean Wind Speed at sigma level 0.995 from daily wind speed (from daily vector winds)" ;
                wspd:units = "m/s" ;
                wspd:_FillValue = 99999 ;
                wspd:missing_value = 99999 ;
                wspd:precision = 2 ;
                wspd:least_significant_digit = 1 ;
                wspd:var_desc = "Wind Speed" ;
                wspd:dataset = "CDC Derived NCEP Reanalysis Products" ;
                wspd:level_desc = "Surface" ;
                wspd:statistic = "Mean" ;
                wspd:parent_stat = "Other" ;
                wspd:actual_range = 0.509994521.33 ;

// global attributes:
                :CDI = "Climate Data Interface version 1.6.2 (http://code.zmaw.de/projects/cdi)" ;
                :Conventions = "COARDS" ;
                :history = "Wed Nov 26 10:45:57 2014: cdo ymonsub wind3.nc -ymonmean wind3.nc wind.nc
Wed Nov 26 10:45:57 2014: cdo setmissval,99999 wind2.nc wind3.nc
Fri Nov 07 12:47:46 2014: cdo seldate,2006-01-01,2013-12-01 wind1.nc wind2.nc
Fri Nov 07 12:20:04 2014: cdo sellonlatbox,-20.0,-15.0,30.0,20.0 wspd.nc wind1.nc
Thu May  4 20:11:50 2000: ncrcat -d time,0,623 /Datasets/ncep.reanalysis.derived/surface/wspd.mon.mean.nc wspd.mon.mean.nc
Mon Jul  5 23:54:34 1999: ncrcat ./wspd.mon.mean.nc /Datasets/ncep.reanalysis.derived/surface/wspd.mon.mean.nc /dm/dmwork/nmc.rean.ingest/combinedMMs/surface/wspd.mon.mean.nc
Oct 26 23:42:16 1995 from 4 time daily u,v wind speeds
created 99/04/15 by CAS (netCDF2.3)
Converted to chunked, deflated non-packed NetCDF4 2014/09" ;
                :description = "Data from NCEP initialized reanalysis (4x/day).  These are the 0.9950 sigma level values" ;
                :platform = "Model" ;
                :references = "http://www.esrl.noaa.gov/psd/data/gridded/data.ncep.reanalysis.derived.html" ;
                :NCO = "20121012" ;
                :title = "monthly mean wspd.sig995 from the NCEP Reanalysis" ;
                :CDO = "Climate Data Operators version 1.6.2 (http://code.zmaw.de/projects/cdo)" ;
>

Marcas en eje con escala logaritmica

de Isabel Sánchez Muñoz -

Hola: Soy nueva usuaria de R y tengo el siguiente problema: 
Estoy dibujando un gráfico de lineas y puntos con el comando plot con escala logarítmica en el eje 0Y y necesito modificar las marcas del eje. Concretamente necesito que el rango sea [10^-12, 10^-1] con una marca en cada potencia negativa de 10: 10^-12, 10^-11, 10^-10...
En el eje 0X tengo la escala lineal y lo he modificado sin problema con el comando "xaxp" pero no consigo usar bien "yaxp" con la escala logarítmica ni encuentro ningún ejemplo que me lo aclare.

Agradezco si alguien puede ayudarme.

Saludos cordiales, Isabel Sánchez.

Modificar eje X

de Marina Sev -
Buenas tardes,

estoy tratando de sacar unas gráficas de líneas, pero me encuentro con el siguiente problema.

Tengo un data frame (sp12) con 4 columnas:

mes - año - var1 - var2

Mi intención es representar en un gráfico de líneas, por ejemplo, la variable 1, donde el eje Y muestre los valores de la variable y el eje X los años.

Mi problema viene que tengo el mismo valor de año repetido 12 veces (por los 12 meses del año) tal como muestro a continuación:


Aplicando la línea:
 
plot(x=sp12$YEAR, y=sp12$A1_12,col='black', type='l',main='A1', xlab='Años', ylab='valor') 

obtengo la gráfica de la primera imagen adjunta, toma desordenados los valores de la variable 1 (A1_12).

Aplicando esta línea:

plot(sp12[,3],type='l')


obtengo los valores correctamente ordenados, pero el eje X no muestra los años.


He probado distintos comandos que he encontrado pero casi siempre vienen referidos a formatos 'fecha' (ej as.date). He indagado en la librería ggplot2 y lattice, pero no doy con la tecla.

Lo que quiero conseguir es insertar un eje X con los años únicamente.


Gracias de antemano.

Modelos Mixtos - Modelar la correlacion

de Pilar MP -

Estimados

Estoy ajustando un modelo mixto sencillo para la variable nitratos del suelo medido en el tiempo, siendo el factor fijo el tiempo (DAI=dias de incubacion a campo) y el factor aleatorio la replica (Rep=la parcela).Cuando intento modelar la correlacion simetrica con el comando corSymm(form=~DAI|Rep) me dice

Error in Initialize.corSymm(X[[i]], ...) :  unique values of the covariate  for "corSymm" objects must be a sequence of consecutive integers

La variable DAI tiene estos valores

[1]  0  0  0  0 23 23 23 23 36 36 36 36 50 50 50 50 64 64 64

[20] 64

Sin embargo, si me permite correr el modelo con la correlacion corCAR1. Alguien sabe a que puede deberse?

Muchas gracias

Saludos





Consulta logica

de Marina Sev -

Buenos días,

en primer lugar siento el nivel básico y elemental que pueda tener esta consulta, soy iniciada en R. Estoy trabajando con unos datos agrarios y me gustaría poder explorarlos a partir de agregaciones por tipo de cultivo y año.

He depurado los datos quedándome con aquellos que me interesan. La estructura de mis datos (simplificada, tengo más variables) es:

Año (YEAR) | Codigo Comunidad Autonoma | Codigo Provincia | Conjunto de parcela*(NUM) | Parcela | Cultivo**(CUL) | Rendimiento (RTO)

(*Las parcelas se insertan en distintos conjuntos de parcelas.)

(**Cultivo es una variable factor que toma valores: AM, C2,C6,GI...)

Rendimiento es mi principal variable, ya que es el dato que me interesa conocer.

He realizado una primera 'consulta' con la función Aggregate

  • rendiseg<-aggregate(datos$RTO,list(datos$CUL,datos$NUM,datos$YEAR),sum)

Así he conseguido conocer el rendimiento total por cultivo, conjunto de parcela y año.

En mi segunda consulta he querido realizar un filtro por tipo de cultivo, por ejemplo para el primero que serían almendros (AM)

  • rendiAM<-aggregate(datos$RTO,list(datos$CUL=='AM',datos$NUM,datos$YEAR),sum)

Lo que R me devuelve es la misma tabla que rendiseg, pero en la columna de los cultivos aparecen expresiones lógicas TRUE y FALSE en función a qué campo cultivo cumple la función de que sea igual a 'AM'.

Lo que me gustaría obtener es por grupo de parcela, parcela y año, el rendimiento para un tipo de cultivo en modo tabla sin que me aparezcan TRUE y FALSE, sino simplemente los valores de Almendro.


No sé si mi explicación sobre la duda es demasiado clara.


Agradezco de antemano cualquier tipo de ayuda.


Remplazar valores en R

de David Martínez Briseño -

Tengo una variable que expresa un porcentaje. Parte de la observaciones de variable están en porcentaje y otras en decimal. Ejemplo:

Var1

89

75

40

.35

.65

.70


Quiero remplazar los valores decimales por valores enteros. Es decir, 0.35 por 35.

Usé la siguientes instrucciones pero no funcionan:

datos$var1[datos$var1<1] <-var1*100

datos$var1[which(datos$var1<1)] <-var1*100

El mensaje que después de la instrucción es:

number of items to replace is not a multiple of replacement length

¿Cómo puedo hacer el cambio?

Gracias por la ayuda


Gracias por la ayuda




Método de cuadrados medios, John Von Neumann

de oscar martinez -
Me pueden ayudar a programar este generador de números aleatorios? Consiste en tomar un número entero inicial aleatoriamente de 2n cifras y generar la secuencia como las 2n cifras centrales resultantes al elevar al cuadrado su predecesor. Programa este generador y detecta sus principales problemas.

método de Lehmer

de oscar martinez -
Hola, a ver si me pueden ayudar a programar este generador de números aleatorios. Gracias. Consiste en tomar dos números enteros x0 y c, de n y k cifras, respectivamente (con k < n), calcular x0c y separar sus k cifras de la izquierda, y al número formado por las cifras restantes se le resta el número formado con dichas k cifras. Hay que programar este generador y detectar sus principales problemas.