I 've got an R assignment in which I have to add a column to my matrix. It's about dates(time zones), I use dplyr and lubridate libraries.
So I want from the below table to according to the state column to add its OlsonName(i.e. NSW -> Australia/NSW)
    Event.ID  Database     Date.Time      Nearest.town  State   *OlsonName*
1    20812     Wind     23/11/1975 07:00    SYDNEY       NSW  *Australia/NSW*
2    20813    Tornado   02/12/1975 14:00    BARHAM       NSW  *Australia/NSW*
I implement that with a function and a loop:
#function 
addOlsonNames <- function(aussieState,aussieTown){
 if(aussieState=="NSW"){
  if(aussieTown=="BROKEN HILL"){
    value <- "Australia/Broken_Hill";
  }else{
    value <- "Australia/NSW"
 }
 }else if(aussieState=="QLD"){
  value <- "Australia/Queensland"
 }else if(aussieState=="NT"){
  value <- "Australia/North"
 }else if(aussieState=="SA"){
  value <- "Australia/South"
 }else if(aussieState=="TAS"){
  value <- "Australia/Tasmania"
 }else if(aussieState=="VIC"){
  value <- "Australia/Victoria"
 }else if(aussieState=="WA"){
  value <- "Australia/West"
 }else if(aussieState=="ACT"){
  value <- "Australia/ACT"
 }
 else{
  value <- "NAN"
 }
 return(value)
}
#loop
for(i in 1:nrow(aussieStorms)){
 aussieStorms$OlsonName[i] <- addOlsonNames(State[i],Nearest.town[i])
}
Most of the instances are classified correctly like on my table above but some of the instances are misclassified(i.e. State~TAS -> OlsonName~Australia/West. Altough I have some State~TAS -> OlsonName~Australia/Tasmania).
Seems strange to me. What might be the issue ?
Update:
I also tried mutate() and that's what I got:
 aus1 <- mutate(aussieStorms,OlsonXYZ = addOlsonNames(State,Nearest.town))
 Warning messages:
  1: In if (aussieState == "NSW") { :
  the condition has length > 1 and only the first element will be used
  2: In if (aussieTown == "BROKEN HILL") { :
  the condition has length > 1 and only the first element will be used
 
    