hrbrmstr

ThinkStats in R Example 1.2

Mar 4th, 2012
107
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
R 1.58 KB | None | 0 0
  1. # ThinkStats in R by @hrbrmstr
  2. # Example 1.2
  3. # File format info: http://www.cdc.gov/nchs/nsfg/nsfg_cycle6.htm
  4.  
  5. # setup a data frame that has the field start/end info
  6.  
  7. pFields <- data.frame(name  = c('caseid', 'nbrnaliv', 'babysex', 'birthwgt_lb','birthwgt_oz','prglength', 'outcome', 'birthord',  'agepreg',  'finalwgt'),
  8.                       begin = c(1, 22, 56, 57, 59, 275, 277, 278, 284, 423),
  9.                       end   = c(12, 22, 56, 58, 60, 276, 277, 279, 287, 440)
  10. )
  11.  
  12. # calculate widths so we can pass them to read.fwf()
  13.  
  14. pFields$width <- pFields$end - pFields$begin + 1
  15.  
  16. # we aren't reading every field (for the book exercises)
  17.  
  18. pFields$skip <-  (-c(pFields$begin[-1]-pFields$end[-nrow(pFields)]-1,0))
  19.  
  20. widths <- c(t(pFields[,4:5]))
  21. widths <- widths[widths!=0]
  22.  
  23. # read in the file
  24.  
  25. pregnancies <- read.fwf("2002FemPreg.dat", widths)
  26.  
  27. # assign column names
  28.  
  29. names(pregnancies) <- pFields$name
  30.  
  31. # divide mother's age by 100
  32.  
  33. pregnancies$agepreg <- pregnancies$agepreg / 100
  34.  
  35. # convert weight at birth from lbs/oz to total ounces
  36.  
  37. pregnancies$totalwgt_oz = pregnancies$birthwgt_lb * 16 + pregnancies$birthwgt_oz
  38.  
  39. rFields <- data.frame(name  = c('caseid'),
  40.                       begin = c(1),
  41.                       end   = c(12)
  42. )
  43.  
  44. rFields$width <- rFields$end - rFields$begin + 1
  45. rFields$skip <-  (-c(rFields$begin[-1]-rFields$end[-nrow(rFields)]-1,0))
  46.  
  47. widths <- c(t(rFields[,4:5]))
  48. widths <- widths[widths!=0]
  49.  
  50. respondents <- read.fwf("2002FemResp.dat", widths)
  51. names(respondents) <- rFields$name
  52.  
  53. str(respondents)
  54. str(pregnancies)
Advertisement
Add Comment
Please, Sign In to add comment