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 <[email protected]> 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, <[email protected]> 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: [email protected] >> >> >> >> >> >> En el correo anterior se me olvidó mencionar que trabajo con Rstudio >> >> El 28 de mayo de 2015, 15:18, MªLuz Morales <[email protected]> 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 >> [email protected] >> https://stat.ethz.ch/mailman/listinfo/r-help-es >> [[alternative HTML version deleted]] >> >> _______________________________________________ >> R-help-es mailing list >> [email protected] >> https://stat.ethz.ch/mailman/listinfo/r-help-es >> > > > > -- > Saludos, > Carlos Ortega > www.qualityexcellence.es > [[alternative HTML version deleted]] _______________________________________________ R-help-es mailing list [email protected] https://stat.ethz.ch/mailman/listinfo/r-help-es
