mardi 5 mai 2020

Need help to reduce for and if loop run time in r

x <- data.frame("CD"=1:10, "ID"=as.character(c(rep(222,2),rep(555,3),rep(777,2),rep(999,2),111)),"Unit"=c(rep("EM",2),rep("NAM",2),rep("GT",2),rep("EM",2),"AO","AO"), stringsAsFactors = FALSE)

tim<- proc.time(); x <- data.frame(x, Unit_New=rep(NA,nrow(x))); for(i in unique(x$ID)){
    if(any(x$Unit[x$ID==i] == "EM")); x$Unit_New[x$ID==i]<- "EM"; else if(any(x$Unit[x$ID==i] == "NAM"));
  x$Unit_New[x$ID==i]<- "NAM"; else if(any(x$Unit[x$ID==i] == "AO")); x$Unit_New[x$ID==i]<- "AO"; else; 
  x$Unit_New[x$ID==i] <- "New"; }; proc.time() - tim

Aucun commentaire:

Enregistrer un commentaire