# 1 
d <- d %>% 
  mutate(s=factor(c("M", "F"))[as.numeric(substr(id,nchar(id),nchar(id))) %% 2])
# 2 
mData <- d %>% filter(s=="M")Naming stuff
Author
    
  Published
    January 10, 2024
1 Om at navngive ting
1.1 Mening / formål
Lad variabler, funktion og filers navne være sigende for deres mening.
Kig på koden og foreslå bedre variable navne
Løsningsforslag
Desværre findes funktionen cpr2sex ikke i hverken basis R eller Tidyverse, men vi kan jo lave den selv:
Tip
# Requires a custom function like this -- which could be sourced from file
cpr2sex <- function(x) {
  # This function takes a string (x), presumed to be a valid Danish CPR
  # and return "F", "M" or NA depending on the last character in the string
  # If the last CPR character is an even number, it indicates female sex, and
  # an odd number indicates male sex.
  if (str_sub(x, str_length(x), str_length(x)) %in% c("0","2","4","6","8")) {
    return("F") 
  } else if (str_sub(x, str_length(x), str_length(x)) %in% c("1","3","5","7","9")) {
    return("M") 
  } 
  return(NA) # Last character in CPR is not a ciffre
}Vi kunne så gemme denne funktion i en separat fil og ’source’e den … eller skrive en ny R pakke.
1.2 Sammensatte navne

- Brug under_scores
 - Brug ikke camelCase
 - Brug ikke kebab-case
 
1.3 Navneord og verber
1.4 Navne
Hovedpointer
- Navne skal være meningsbærende
 - Brug under_scores, ikke CamelCase, ej heller kebab-case
 - Funktionsnavne bør være verber
 - Variabelnavne bør være navneord