mardi 24 août 2021

for loop if else: run command based on string length

I am trying to iterate over 1 column in my dataframe. I would like code to run on each row with a string length of 12. If it is not of character length 12, run else. OSGB_trim is a character.

I am a bit confused, I have looked into use nchar, character, str_length and have attemped to split the string too but have not been able to work out where I am going wrong.

i is printing as 1915 which is the length of OSGB_trim. It is not isolating the character values that equal to 12.

for (i in 1:length(HIWARG$OSGB_trim)){
  if (str_length(HIWARG$OSGB_trim) [i] == 12){
    print(i)
    HIWARG$GR1 [i]<- substring(HIWARG$OSGB_trim,1,2)
    HIWARG$GR2 [i]<- substring(HIWARG$OSGB_trim,3,4)
    HIWARG$GR3 [i]<- str_sub(HIWARG$OSGB_trim, 5,7)
    HIWARG$GR4 [i]<- str_sub(HIWARG$OSGB_trim, 8,9)
    HIWARG$GR5 [i]<- str_sub(HIWARG$OSGB_trim,10,12)
  }
  else{
    HIWARG$GR1 [i]<- substring(HIWARG$OSGB_trim,1,2)
    HIWARG$GR2 [i]<- substring(HIWARG$OSGB_trim,3,5)
    HIWARG$GR3 [i]<- str_sub(HIWARG$OSGB_trim, 6,9)
  }
}

Thank you for any guidance you can offer!

Aucun commentaire:

Enregistrer un commentaire