Follow

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use
Contact

how i can run case when with diferent nchar vector

I have this data frame. I need to substr fecha_nacimiento but it has 7 or 8 char.

fecha_nacimiento n
1011997 1
31122002 2

i try this

fecha_nacimiento <- fecha_nacimiento %>% 
  mutate(year = case_when(nchar(fecha_nacimiento$fecha_nacimiento == 7 ~ substr(fecha_nacimiento, 4, 7))),
                          nchar(fecha_nacimiento$fecha_nacimiento == 8 ~ substr(fecha_nacimiento, 5, 8))) 

But there is an error in MUTATE.

MEDevel.com: Open-source for Healthcare and Education

Collecting and validating open-source software for healthcare, education, enterprise, development, medical imaging, medical records, and digital pathology.

Visit Medevel

I wish to get the next formate

fecha_nacimiento n days month year
1011997 1 1 11 1997
31122002 2 31 12 2002

What i can do?

>Solution :

I think it’s simpler to first make every sample in fecha_nacimiento to the same number of characters and then work from it. Also, if you are using dplyr, you don’t need to specify the dataframe name inside the operations (fecha_nacimiento$fecha_nacimiento would be wrong).

library(dyplr)

fecha_nacimiento %>% # First, get every string to the same n characters
  mutate( ifelse(nchar(fecha_nacimiento) == 7, # if nchar 7
    paste('0',fecha_nacimiento,''), # add 0 to beginning
    fecha_nacimiento) %>% # or skip
  # Now the new colums
  mutate(
    day = substr(fecha_nacimiento, 1, 2),
    month = substr(fecha_nacimiento, 3, 4),
    year = substr(fecha_nacimiento, 5, 8)
  )
Add a comment

Leave a Reply

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use

Discover more from Dev solutions

Subscribe now to keep reading and get access to the full archive.

Continue reading