Hi!
I have focused on an easy thought process over an efficient operation.
library(magrittr)
dfchild <- data.frame(
subjectid = c("a","b","c","d","e","f","g","h","i","j","k"),
location = c("NY","NC","WA","WA","OR","CA","AR","KS","AZ","VT","MA"),
childone_2000 = c(NA,NA,1,NA,NA,NA,NA,1,NA,NA,NA),
childone_2001 = c(NA,1,2,NA,NA,NA,NA,2,NA,NA,1),
childone_2002 = c(1,2,2,NA,1,NA,1,2,NA,NA,2),
childone_2003 = c(2,2,2,NA,2,NA,2,2,1,NA,2),
childone_2004 = c(2,2,2,NA,2,NA,2,2,2,NA,2),
childone_2005 = c(2,2,2,1,2,NA,2,2,2,NA,2),
childone_2006 = c(4,2,2,2,2,NA,2,2,2,1,2),
childtwo_2000 = c(NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA),
childtwo_2001 = c(NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA),
childtwo_2002 = c(NA,NA,1,NA,NA,NA,NA,1,NA,NA,NA),
childtwo_2003 = c(NA,NA,2,NA,NA,NA,NA,2,NA,NA,1),
childtwo_2004 = c(1,NA,4,NA,NA,NA,NA,2,NA,NA,2),
childtwo_2005 = c(2,1,NA,NA,1,NA,NA,2,NA,NA,2),
childtwo_2006 = c(2,2,NA,1,2,NA,NA,2,NA,NA,2),
childthree_2000 = c(NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA),
childthree_2001 = c(NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA),
childthree_2002 = c(NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA),
childthree_2003 = c(NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA),
childthree_2004 = c(NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA),
childthree_2005 = c(1,NA,1,NA,NA,NA,NA,NA,NA,NA,NA),
childthree_2006 = c(2,NA,2,NA,NA,NA,NA,NA,NA,NA,NA),
childfour_2000 = c(NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA),
childfour_2001 = c(NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA),
childfour_2002 = c(NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA),
childfour_2003 = c(NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA),
childfour_2004 = c(NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA),
childfour_2005 = c(NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA),
childfour_2006 = c(1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA),
childfive_2000 = c(NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA),
childfive_2001 = c(NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA),
childfive_2002 = c(NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA),
childfive_2003 = c(NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA),
childfive_2004 = c(NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA),
childfive_2005 = c(NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA),
childfive_2006 = c(1,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA))
dfchild %>%
tidyr::pivot_longer(tidyr::starts_with("child")) %>%
dplyr::mutate(
year = as.numeric(stringr::str_match(name, "[0-9]+")),
child = stringr::str_sub(name, start=1, end=-6)
) %>%
dplyr::select(-name) %>%
tidyr::pivot_wider(
names_from = "child",
values_from = "value"
) %>%
dplyr::mutate(
total_children = dplyr::if_else(is.na(childone) | childone == 4, 0, 1 ) +
dplyr::if_else(is.na(childtwo) | childtwo == 4, 0, 1 ) +
dplyr::if_else(is.na(childthree) | childthree == 4, 0, 1 ) +
dplyr::if_else(is.na(childfour) | childfour == 4, 0, 1 ) +
dplyr::if_else(is.na(childfive) | childfive == 4, 0, 1 )
)
Best!