Skip to content

[R-es] Problema con el subset

4 messages · Igor Sosa Mayor, Carlos Ortega, Jose Manuel Veiga del Baño

#
Hola a todos,

Agradeceros de antemano vuestro tiempo y paciencia ya que soy un poco
novato y tal vez esto sea un poco trivial. 

Lo que quiero hacer es que me represente en eje de las x las fechas
(columna fecha) y los valores de z (columna z) pero de los datos que he
filtrado antes en
(dfgrupo<-subset(df,df$parametroslaboratorio=="Aflatoxinas ByG")) y que los
parámetros iguales (variables de la columna param) se unan entre sí y
tengan un color cada param. En principio estoy usando un código de un
ejemplo que funciona muy bien pero lo único que consigo es que se me unan
todos los puntos (todos los parm) y que no lo haga por colores. 

Si alguien se le ocurre algo se lo agradezco.

    df  <- read.table(file="xxxx.csv", header=T, sep=";", dec=",")
    df  <-na.omit(df)
dfgrupo<-subset(df,df$parametroslaboratorio=="Aflatoxinas ByG")
   niveles <- as.numeric(dfgrupo$param)
   ntrees <- max(niveles) 
   xrange <- range(as.Date(dfgrupo$fecha))
   yrange <- range(dfgrupo$z)
   plot(xrange, yrange, type = "n", xlab = "Fecha del interlaboratorio", 
        ylab = "Z-score")
   colors <- rainbow(ntrees)
   ltipo <- c(1:ntrees)
   char <- seq(18, 18 + ntrees, 1)
   # Añadir las lineas al grafico
   for (i in 1:ntrees) {
       tree <- dfgrupo[ dfgrupo$param == levels( dfinter$param )[ i ], ] 
       lines(as.Date(dfgrupo$fecha), dfgrupo$z, type = "b", lwd = 1.5, 
             col = colors[i], pch = char[i])
   }
   # Añadir un titulo and subtitulo
   title("Evaluacion de los parametros")
   # Añadir la leyenda
   legend(xrange[1], yrange[2], 1:ntrees, cex = 0.8, col = colors, pch =
char, 
       lty = ltipo, title = "Parametro")
    

Un saludo.

Dr. José M. Veiga
Dpt. Química Agrícola, Geología y Edafología.
Universidad de Murcia.
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <https://stat.ethz.ch/pipermail/r-help-es/attachments/20141217/3146ea8f/attachment.html>
------------ próxima parte ------------
param;matrizinter;matrizlaboratorio;codigo;parametroslaboratorio;fecha;RESULT XXX;Uds;RESULT INTER;z;Spropuesta;Sobtenida;incertinter;numeropartic
AFB1 Method;Chilli Powder;ESPECIAS;FAPAS 04218;Aflatoxinas ByG;01/08/2013;5,62;ppb;3,78;2,2;0,832;0,84;0,25;11
AFB2 Method;Chilli Powder;ESPECIAS;FAPAS 04218;Aflatoxinas ByG;01/08/2013;1,62;ppb;2,69;-1,8;0,591;0,59;0,18;11
AFG1 Method;Chilli Powder;ESPECIAS;FAPAS 04218;Aflatoxinas ByG;01/08/2013;2,31;ppb;2,32;0,01;0,509;1;0,3;11
AFG2 Method;Chilli Powder;ESPECIAS;FAPAS 04218;Aflatoxinas ByG;01/08/2013;1,19;ppb;1,78;-1,5;0,392;0,39;0,12;11
AFM1 Method;Milk Powder;LECHE EN POLVO;FAPAS 04224;M1;01/08/2013;0,181;ppb;0,13;-1,3;0,04;0,04;0,012;11
AFB1 Method;Pistachos;FRUTOS SECOS;FAPAS 04239;Aflatoxinas ByG;01/06/2014;7,26;ppb;7,6;-0,2;1,67;1,7;0,51;11
AFB2 Method;Pistachos;FRUTOS SECOS;FAPAS 04239;Aflatoxinas ByG;01/06/2014;1,31;ppb;1,47;-0,5;0,32;0,32;0,097;11
AFG1 Method;Pistachos;FRUTOS SECOS;FAPAS 04239;Aflatoxinas ByG;01/06/2014;1,85;ppb;1,64;0,6;0,36;0,35;0,11;11
AFG2 Method;Pistachos;FRUTOS SECOS;FAPAS 04239;Aflatoxinas ByG;01/06/2014;1,17;ppb;0,76;2,5;0,17;0,16;0,049;11
As;WasteWater;AGUAS RESIDUALES;GSCAR-2;Metales aguas y sales;01/07/2014;0,86;ppm;1,01;-1,48;0,1012;0,1;0,031;11
Cd;WasteWater;AGUAS RESIDUALES;GSCAR-2;Metales aguas y sales;01/07/2014;1,19;ppm;1,5;-1,85;0,1463;0,17;0,051;11
Cr;WasteWater;AGUAS RESIDUALES;GSCAR-2;Metales aguas y sales;01/07/2014;3,58;ppm;3,55;0,08;0,355;0,38;0,11;11
TOC;WasteWater;AGUAS RESIDUALES;GSCAR-2;TOC;01/07/2014;883,5;ppm;854,98;0,33;85,49;86,42;26,1;11
#
Jose Manuel Veiga del Baño <chemavb en um.es>
writes:
mirando el código así un poco rápido... ¿eso de
¿no tendría que ser?
lines(as.Date(dfgrupo$fecha), tree, type = "b", lwd = 1.5, 
col = colors[i], pch = char[i])

Saludos,
1 day later
#
Hola,

El error lo tienes aqui:

#-------------------
  tree <- dfgrupo[ dfgrupo$param == levels( dfinter$param )[ i ], ]
    lines(as.Date(*tree*$fecha), *tree*$z, type = "b", lwd = 1.5,
           col = colors[i], pch = char[i])
#-------------------
Primero seleccionas un subconjunto "tree", pero luego a la hora de pintar
las lineas, vuelves a escoger "dfgrupo" y une todos los puntos del conjunto
dfgroup en vez de solamente los del subconjunto "tree".

Como alternativa, aunque estás empezando a usar R, mira esta otra forma que
evita todos los cálculos intermedios que has utilizado:

#---------------------
library(lattice)
parVal <- unique(as.vector(dfgrupo$param))
colVal <- rainbow(length(parVal))

xyplot(
        z ~ as.Date(fecha)
       ,data=dfgrupo
       ,group=param
       ,type="b"
       ,main="Evaluación de los parámetros"
       ,xlab=list("Fecha del interlaboratorio", font=2, cex=1.1)
       ,ylab=list("Z-Score", font=2, cex=1.1)
       ,scales=list(col="blue", font=2, cex=1.1)
       ,key=simpleKey(parVal, columns=4)
       ,par.settings=simpleTheme(fill=colVal, col=colVal, pch=19)
  )
#---------------------

Saludos,
Carlos Ortega
www.qualityexcellence.es

El 17 de diciembre de 2014, 19:59, Jose Manuel Veiga del Baño <chemavb en um.es

  
    
#
Muchas gracias. 

Tienes razón era ese el problema. Voy a mirar la opción alternativa.

Un saludo.

Carlos Ortega <cof en qualityexcellence.es> escribió:
sí
dec=",")_
Vínculos:
---------
[1] http://www.qualityexcellence.es

Dr. José M. Veiga
Dpt. Química Agrícola, Geología y Edafología.
Universidad de Murcia.