R/raceCensus2000.R

Defines functions raceCensus2000

Documented in raceCensus2000

#' Racial identity imputation from last name.
#' @return The percent of individuals who identified themselfs as White, Balck, Asian and Indian American/Native American 
#' @import dplyr
#' @export 

# I need to correct and change "match" with "grep"


raceCensus2000 = function(last.name){
  
  # Move to character and save original names inserted to the function:
  last.name = as.character(last.name)
  last.name.original = last.name
  
  # Move to upper case letters to match census records:
  last.name = toupper(last.name)
  
  # Match to census names
  index.match = match(last.name,census00$name)
  
  # generate missing values for the non-matched names
  if (sum(is.na(index.match))>0){
    results.na = data.frame(name.last=last.name[which(is.na(index.match))],
                            black.impute = NA,
                            white.impute = NA,
                            asian.impute = NA,
                            aian.impute = NA,
                            percent.black = NA,
                            percent.white = NA,
                            percent.asian = NA,
                            percent.aian = NA,
                            percent.two.race = NA,
                            count = NA
    )
  }
  
  
  results <- census00 %>%
    slice(index.match) %>%
    mutate(
      black.impute = as.numeric(percent.black>percent.white & percent.black > percent.asian & percent.black>percent.aian),
      white.impute = as.numeric(percent.white>percent.black & percent.white>percent.asian & percent.white>percent.aian),
      asian.impute = as.numeric(percent.asian>percent.white & percent.asian>percent.black & percent.asian>percent.aian),
      aian.impute = as.numeric(percent.aian>percent.white & percent.aian>percent.black & percent.aian>percent.asian)
    ) %>%
    select(-percent.hispanic)
  
  # Adding the non-matched names to the results data frame
  if (sum(is.na(index.match))>0){
    results = rbind(results,results.na)
  }
  
  results = results[order(results$name.last),]
  
  # Add the original names:
  results$last.name.original = last.name.original[order(last.name.original)]
  
  return(results)
}
yotamshemtov/NameSexRace documentation built on May 4, 2019, 5:33 p.m.