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