________________________________________
De: R-help-es [r-help-es-bounces en r-project.org] en nombre de MªLuz
Morales [mlzmrls en gmail.com]
Enviado: jueves, 28 de mayo de 2015 16:14
Para: Carlos Ortega
CC: R-help-es en r-project.org
Asunto: Re: [R-es] La ejecución de mi script R es muy lenta
Hola,
gracias por contestar tan rápido.
En el email he adjuntado los archivos seta y outcomes.csv, no me queda
claro como hacer para que podáis acceder a ellos de otra manera.
El 28 de mayo de 2015, 15:53, Carlos Ortega <cof en qualityexcellence.es>
escribió:
Hola,
Si no tienes inconveniente en compartir tu conjunto de datos (puedes
dejarlo en un Dropbox y compartir enlace) o incluir una salida de la
variables: "seta" y "outcomes" (función "save.image()") con eso podemos
darte alguna solución mucho más rápida que la que planteas.
En tu código con un bucle estás tratando de rellenar una lista que son
los
diferentes agregados y esto se puede hacer mucho más rápido (segundos)
con
varios paquetes: data.table, dplyr y sqldf.
Saludos,
Carlos Ortega
www.qualityexcellence.es
El 28 de mayo de 2015, 15:34, <javier.ruben.marcuzzi en gmail.com>
escribió:
Estimada MarÃa Luz Morales
Puedes intentar con data.table y reemplazar for por algina otra opción
vectorizada, aunque en R moderno esto mejoró, y la posibilidad de
compile
deberÃa ser evaluada.
Javier Rubén Marcuzzi
Técnico en Industrias Lácteas
Veterinario
De: MªLuz Morales
Enviado el: ?jueves?, ?28? de ?mayo? de ?2015 ?10?:?21? ?a.m.
Para: R-help-es en r-project.org
En el correo anterior se me olvidó mencionar que trabajo con Rstudio
El 28 de mayo de 2015, 15:18, MªLuz Morales <mlzmrls en gmail.com>
escribió:
Hola,
soy nueva en esta lista y también en R. Yo he realizado un script en
R
que carga dos archivos csv, uno de ellos con casi 2 millones de
filas.
El
programa carga esos archivos a data frame, y se trata simplemente de
seleccionar ciertos datos, hacer alguna operación (media, minimo,
máximo)
y presentarlos en una tabla que tendrá 4000 filas. La ejecución de
este
programa ha tardado casi 3 horas!!!!, podéis decirme si R es lento en
esta
operación o es que mi código no está optimizado y no estoy haciéndolo
de la
forma correcta.
El código de mi programa es el siguiente:
#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
## Set-A.csv y Outcomes.csv deben estar en el directorio actual
# Transforma csv a data frame
seta <- read.csv('Set-A.csv');
outcomes <- read.csv('Outcomes-A.csv');
ids <- as.character(unique(outcomes$RecordID));
## Número de RecordsID distintos
Length_ids <- length(ids); #número de RecordsID distintos
ListaABP <- list('RecordID'=-1,'SAPS.I'=-1, 'SOFA'=-1, 'Survival'=-1,
'In.hospital_death'=-1, 'NISysABP_Min'=-1,'NISysABP_Max'=-1,
'NISysABP_Mean'=-1, 'NIDiasABP_Min'=-1,'NIDiasABP_Max'=-1,
'NIDiasABP_Mean'=-1,'NIMAP_Min'=-1,'NIMAP_Max'=-1, 'NIMAP_Mean'=-1);
for (i in 1:Length_ids){#NumRecordID){ # Para cada paciente...
ListaABP$RecordID[i] <- outcomes$RecordID[i];
ListaABP$SAPS.I[i] <- outcomes$SAPS.I[i];
ListaABP$SOFA[i] <- outcomes$SOFA[i];
ListaABP$Survival[i] <- outcomes$Survival[i];
ListaABP$In.hospital_death[i] <- outcomes$In.hospital_death[i];
# Parameter == 'NISysBP'
#seta_NISysABP <- seta[seta$RecordID == ids[i] & seta$Parameter ==
'NISysABP' , c('RecordID','Value')] ;
seta_NISysABP <- seta[seta$RecordID == ids[i] & seta$Parameter ==
'NISysABP' , 'Value'] ; #Creo que esto ya no serÃa un dataframe, por
lo
que
en la siguiente lÃnea puede dar error
ListaABP$NISysABP_Min[i] <- min(seta_NISysABP);
ListaABP$NISysABP_Max[i] <- max(seta_NISysABP);
ListaABP$NISysABP_Mean[i] <- mean(seta_NISysABP);
# Parameter == 'NIDiasABP'
#seta_NIDiasABP <- seta[seta$RecordID == ids[i] & seta$Parameter ==
'NIDiasABP' , c('Time','Value')] ; #En este caso la forma de hacer el
min
serÃa ...min(seta_NIDiasABP$Value);
seta_NIDiasABP <- seta[seta$RecordID == ids[i] & seta$Parameter ==
'NIDiasABP' , 'Value'] ;
ListaABP$NIDiasABP_Min[i] <- min(seta_NIDiasABP);
ListaABP$NIDiasABP_Max[i] <- max(seta_NIDiasABP);
ListaABP$NIDiasABP_Mean[i] <- mean(seta_NIDiasABP);
# Parameter == 'NIMAP'
#seta_NIMAP <- seta[seta$RecordID == ids[i] & seta$Parameter ==
'NIMAP'
, c('Time','Value')] ;
seta_NIMAP <- seta[seta$RecordID == ids[i] & seta$Parameter ==
'NIMAP' ,
'Value'] ;
ListaABP$NIMAP_Min[i] <- min(seta_NIMAP);
ListaABP$NIMAP_Max[i] <- max(seta_NIMAP);
ListaABP$NIMAP_Mean[i] <- mean(seta_NIMAP);
}#for i
Tabla <- data.frame(ListaABP);
#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Gracias de antemano
Un saludo
MªLuz
[[alternative HTML version deleted]]
_______________________________________________
R-help-es mailing list
R-help-es en r-project.org
https://stat.ethz.ch/mailman/listinfo/r-help-es
[[alternative HTML version deleted]]
_______________________________________________
R-help-es mailing list
R-help-es en r-project.org
https://stat.ethz.ch/mailman/listinfo/r-help-es
--
Saludos,
Carlos Ortega
www.qualityexcellence.es
[[alternative HTML version deleted]]
_______________________________________________
R-help-es mailing list
R-help-es en r-project.org
https://stat.ethz.ch/mailman/listinfo/r-help-es
________________________________
Nota: A información contida nesta mensaxe e os seus posibles documentos
adxuntos é privada e confidencial e está dirixida únicamente ó seu
destinatario/a. Se vostede non é o/a destinatario/a orixinal desta mensaxe,
por favor elimÃnea. A distribución ou copia desta mensaxe non está
autorizada.
Nota: La información contenida en este mensaje y sus posibles documentos
adjuntos es privada y confidencial y está dirigida únicamente a su
destinatario/a. Si usted no es el/la destinatario/a original de este
mensaje, por favor elimÃnelo. La distribución o copia de este mensaje no
está autorizada.
See more languages: http://www.sergas.es/aviso_confidencialidad.htm