Buenas tardes a todos,
tengo un problema con R: ejecuto el mismo script en el ordenador del trabajo y en mi portátil con los mismos
datos y obtengo resultados diferentes (siendo los correctos, los obtenidos en el trabajo):
rm(list=ls())
directorio<-"C:\\Documents and Settings\\BDs\\"
library(RODBC)
library(car)
library(gdata)
### DATOS A ###
Adat<-read.xls(paste(directorio,"a.xls",sep=""),sheet=1)
colnames(Adat)<-tolower(colnames(Adat))
Adat<-Adat[,-c(1,2,7:9)]
Adat$m<-as.character(Adat$m)#CAMBIO EL TIPO PARA NO TENER PROBLEMAS
Adat$v<-as.character(Adat$v)#CAMBIO EL TIPO PARA NO TENER PROBLEMAS
### DATOS B ###
load(paste(directorio,"b.rda",sep=""))
b$n<-as.character(b$n)#CAMBIO EL TIPO PARA NO TENER PROBLEMAS
b$p<-as.character(b$p)#CAMBIO EL TIPO PARA NO TENER PROBLEMAS
b$t <- recode(b$t, 'NA=""', as.factor.result=TRUE)
### MERGE ###
Totdat<-merge(b,Adat,by.x=c("t","n","num","p","c"),by.y=c("t","v","num","m","c"),all.x=T,all.y=T)#dim(Totdat)=>5483 rows; 20 variables
### QUITO LAS FILAS DUPLICADAS ###
Totdat<-Totdat[!duplicated(Totdat),]
dim(Totdat)#4982 rows; 20 variables
#CREO UNA VARIABLE IDENTIFICADORA
Totdat$MI_id<-paste(1:dim(Totdat)[1],"mi_id",sep="_")
### ACTUALIZO Totdat CON NUEVOS DATOS:
dat1<-read.xls("C:\\Documents and Settings\\Obtenido del script\\dat1.xls",sheet=1)
dat1<-dat1[(!is.na(dat1$ti) & !is.na(dat1$fi) & !is.na(dat1$x) & !is.na(dat1$y)),]
dim(dat1)#401rows - 33cols
dat1<-dat1[,-c(16:33)]#ELIMINO LAS COLUMNAS QUE NO ME INTERESAN
dim(dat1)#401rows - 15cols
system.time({for (i in 1:dim(dat1)[1]){
          for (j in 1:dim(Totdat)[1]){
            if (dat1$MI_id_dat1[i]==Totdat$MI_id[j]){
             Totdat$ti[j]<-dat1$ti[i]
             Totdat$fi[j]<-dat1$fi[i]
             Totdat$x[j]<-dat1$x[i]
             Totdat$y[j]<-dat1$y[i]
             break
            }
          }
        }
})
dim(Totdat[(!is.na(Totdat$x) & !is.na(Totdat$y)),])
#en el pc del trabajo da :4769rows  21cols
#en mi portátil da:4751rows  21cols !!!
dim(Totdat[(!is.na(Totdat$add) & !is.na(Totdat$x) & !is.na(Totdat$y)),])
#en el pc del trabajo da :4334 rows 21 cols
#en mi portátil da:4316rows  21cols !!!
dim(Totdat[(!is.na(Totdat$add) & is.na(Totdat$x) & is.na(Totdat$y)),])
#en el pc del trabajo da :213 rows 21 cols
#en mi portátil da:231rows  21cols !!!
dim(Totdat[(is.na(Totdat$add) & !is.na(Totdat$x) & !is.na(Totdat$y)),])
#en el pc del trabajo da :435 rows 21 cols
#en mi portátil da:435rows  21cols
La versión de R y la de las librerÃas cargadas en ambos ordenadores son la misma. La versión de Excel también. Lo único que cambia entre las máquinas es el sistema operativo, que en el trabajo es el Windows XP Professional y el de mi portátil es el Windows XP Media Center Edition. Lo curioso de todo es que he creado una máquina virtual en el portátil con el sistema operativo Windows 2000 Server y obtengo los resultados correctos. He probado en varias máquinas y en todas ellas me dan los resultados correctos, menos en mi portátil y en mi ordenador de sobremesa, que también tiene el Windows XP Media Center Edition.
Muchas gracias. Saludos,
David.