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@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 <mlzm...@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@r-project.org https://stat.ethz.ch/mailman/listinfo/r-help-es [[alternative HTML version deleted]] _______________________________________________ R-help-es mailing list R-help-es@r-project.org https://stat.ethz.ch/mailman/listinfo/r-help-es