Data Wrangling with R#

Data wrangling is the process of cleaning, transforming, and preparing raw data for analysis. In this notebook, we demonstrate essential data wrangling techniques in R using popular packages like dplyr and tidyr. Tasks include subsetting data, renaming columns, handling missing values, performing group-based summaries, and reshaping datasets. These steps are critical for ensuring data quality and extracting meaningful insights from real-world datasets.

Install Packages and Libraries#

This code installs and loads the tidyverse, a collection of R packages designed for data science. The tidyverse includes popular tools like dplyr for data manipulation, ggplot2 for visualization, and readr for reading data, among others.

  • install.packages("tidyverse") installs the tidyverse package from CRAN. This step only needs to be done once per system.

  • library(tidyverse) loads the package into the current R session, making its functions available for use.

install.packages("tidyverse")

library(tidyverse)
The downloaded binary packages are in
	/var/folders/2h/84wxzls579b1yv00g4jj02fh0000gn/T//RtmpVhCa6O/downloaded_packages
-- Attaching core tidyverse packages ------------------------ tidyverse 2.0.0 --
v dplyr     1.1.4     v readr     2.1.5
v forcats   1.0.0     v stringr   1.5.1
v ggplot2   3.5.2     v tibble    3.3.0
v lubridate 1.9.4     v tidyr     1.3.1
v purrr     1.0.4     
-- Conflicts ------------------------------------------ tidyverse_conflicts() --
x dplyr::filter() masks stats::filter()
x dplyr::lag()    masks stats::lag()
i Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors

Download Dataset from the URL#

This line reads in a dataset from an online source and stores it as a data frame called NHANES.

  • read_csv() is a tidyverse function from the readr package that reads comma-separated values (CSV) files into R as a tibble, a modern version of a data frame.

  • The dataset is being pulled directly from a GitHub repository via its raw URL: 'https://raw.githubusercontent.com/GTPB/PSLS20/master/data/NHANES.csv'

  • The dataset NHANES likely contains health and demographic data from the National Health and Nutrition Examination Survey.

NHANES <- read_csv('https://raw.githubusercontent.com/GTPB/PSLS20/master/data/NHANES.csv')
Rows: 10000 Columns: 76
-- Column specification --------------------------------------------------------
Delimiter: ","
chr (31): SurveyYr, Gender, AgeDecade, Race1, Race3, Education, MaritalStatu...
dbl (45): ID, Age, AgeMonths, HHIncomeMid, Poverty, HomeRooms, Weight, Lengt...

i Use `spec()` to retrieve the full column specification for this data.
i Specify the column types or set `show_col_types = FALSE` to quiet this message.

Data Exploration#

This code examines the structure and contents of the NHANES dataset:

  • spec(NHANES) displays the guessed column specifications, showing how R interpreted each column (e.g., character, numeric, double). This helps verify that the data types for each column were correctly detected during import.

  • head(NHANES) displays the first six rows of the dataset, giving a quick preview of the data to check its structure and contents.

# Using "spec" to find the guessed column specifications and column names
spec(NHANES)
head(NHANES)
cols(
  ID = col_double(),
  SurveyYr = col_character(),
  Gender = col_character(),
  Age = col_double(),
  AgeDecade = col_character(),
  AgeMonths = col_double(),
  Race1 = col_character(),
  Race3 = col_character(),
  Education = col_character(),
  MaritalStatus = col_character(),
  HHIncome = col_character(),
  HHIncomeMid = col_double(),
  Poverty = col_double(),
  HomeRooms = col_double(),
  HomeOwn = col_character(),
  Work = col_character(),
  Weight = col_double(),
  Length = col_double(),
  HeadCirc = col_double(),
  Height = col_double(),
  BMI = col_double(),
  BMICatUnder20yrs = col_character(),
  BMI_WHO = col_character(),
  Pulse = col_double(),
  BPSysAve = col_double(),
  BPDiaAve = col_double(),
  BPSys1 = col_double(),
  BPDia1 = col_double(),
  BPSys2 = col_double(),
  BPDia2 = col_double(),
  BPSys3 = col_double(),
  BPDia3 = col_double(),
  Testosterone = col_double(),
  DirectChol = col_double(),
  TotChol = col_double(),
  UrineVol1 = col_double(),
  UrineFlow1 = col_double(),
  UrineVol2 = col_double(),
  UrineFlow2 = col_double(),
  Diabetes = col_character(),
  DiabetesAge = col_double(),
  HealthGen = col_character(),
  DaysPhysHlthBad = col_double(),
  DaysMentHlthBad = col_double(),
  LittleInterest = col_character(),
  Depressed = col_character(),
  nPregnancies = col_double(),
  nBabies = col_double(),
  Age1stBaby = col_double(),
  SleepHrsNight = col_double(),
  SleepTrouble = col_character(),
  PhysActive = col_character(),
  PhysActiveDays = col_double(),
  TVHrsDay = col_character(),
  CompHrsDay = col_character(),
  TVHrsDayChild = col_double(),
  CompHrsDayChild = col_double(),
  Alcohol12PlusYr = col_character(),
  AlcoholDay = col_double(),
  AlcoholYear = col_double(),
  SmokeNow = col_character(),
  Smoke100 = col_character(),
  Smoke100n = col_character(),
  SmokeAge = col_double(),
  Marijuana = col_character(),
  AgeFirstMarij = col_double(),
  RegularMarij = col_character(),
  AgeRegMarij = col_double(),
  HardDrugs = col_character(),
  SexEver = col_character(),
  SexAge = col_double(),
  SexNumPartnLife = col_double(),
  SexNumPartYear = col_double(),
  SameSex = col_character(),
  SexOrientation = col_character(),
  PregnantNow = col_character()
)
A tibble: 6 x 76
IDSurveyYrGenderAgeAgeDecadeAgeMonthsRace1Race3EducationMaritalStatus...RegularMarijAgeRegMarijHardDrugsSexEverSexAgeSexNumPartnLifeSexNumPartYearSameSexSexOrientationPregnantNow
<dbl><chr><chr><dbl><chr><dbl><chr><chr><chr><chr>...<chr><dbl><chr><chr><dbl><dbl><dbl><chr><chr><chr>
516242009_10male 3430-39409WhiteNAHigh School Married ...NoNAYesYes16 8 1No HeterosexualNA
516242009_10male 3430-39409WhiteNAHigh School Married ...NoNAYesYes16 8 1No HeterosexualNA
516242009_10male 3430-39409WhiteNAHigh School Married ...NoNAYesYes16 8 1No HeterosexualNA
516252009_10male 40-9 49OtherNANA NA ...NANANA NA NANANANA NA NA
516302009_10female4940-49596WhiteNASome CollegeLivePartner...NoNAYesYes1210 1YesHeterosexualNA
516382009_10male 90-9 115WhiteNANA NA ...NANANA NA NANANANA NA NA

This code retrieves the column and row names of the NHANES tibble:

  • colnames(NHANES) returns a vector containing the names of all the columns in the dataset.

  • rownames(NHANES) returns the row names, but since NHANES is a tibble (a modern data frame), row names are usually not set and this will typically return NULL.

Tibbles generally avoid using row names, favoring row numbers instead.

# find column and row names of the tibble
colnames(NHANES)
rownames(NHANES)
  1. 'ID'
  2. 'SurveyYr'
  3. 'Gender'
  4. 'Age'
  5. 'AgeDecade'
  6. 'AgeMonths'
  7. 'Race1'
  8. 'Race3'
  9. 'Education'
  10. 'MaritalStatus'
  11. 'HHIncome'
  12. 'HHIncomeMid'
  13. 'Poverty'
  14. 'HomeRooms'
  15. 'HomeOwn'
  16. 'Work'
  17. 'Weight'
  18. 'Length'
  19. 'HeadCirc'
  20. 'Height'
  21. 'BMI'
  22. 'BMICatUnder20yrs'
  23. 'BMI_WHO'
  24. 'Pulse'
  25. 'BPSysAve'
  26. 'BPDiaAve'
  27. 'BPSys1'
  28. 'BPDia1'
  29. 'BPSys2'
  30. 'BPDia2'
  31. 'BPSys3'
  32. 'BPDia3'
  33. 'Testosterone'
  34. 'DirectChol'
  35. 'TotChol'
  36. 'UrineVol1'
  37. 'UrineFlow1'
  38. 'UrineVol2'
  39. 'UrineFlow2'
  40. 'Diabetes'
  41. 'DiabetesAge'
  42. 'HealthGen'
  43. 'DaysPhysHlthBad'
  44. 'DaysMentHlthBad'
  45. 'LittleInterest'
  46. 'Depressed'
  47. 'nPregnancies'
  48. 'nBabies'
  49. 'Age1stBaby'
  50. 'SleepHrsNight'
  51. 'SleepTrouble'
  52. 'PhysActive'
  53. 'PhysActiveDays'
  54. 'TVHrsDay'
  55. 'CompHrsDay'
  56. 'TVHrsDayChild'
  57. 'CompHrsDayChild'
  58. 'Alcohol12PlusYr'
  59. 'AlcoholDay'
  60. 'AlcoholYear'
  61. 'SmokeNow'
  62. 'Smoke100'
  63. 'Smoke100n'
  64. 'SmokeAge'
  65. 'Marijuana'
  66. 'AgeFirstMarij'
  67. 'RegularMarij'
  68. 'AgeRegMarij'
  69. 'HardDrugs'
  70. 'SexEver'
  71. 'SexAge'
  72. 'SexNumPartnLife'
  73. 'SexNumPartYear'
  74. 'SameSex'
  75. 'SexOrientation'
  76. 'PregnantNow'
  1. '1'
  2. '2'
  3. '3'
  4. '4'
  5. '5'
  6. '6'
  7. '7'
  8. '8'
  9. '9'
  10. '10'
  11. '11'
  12. '12'
  13. '13'
  14. '14'
  15. '15'
  16. '16'
  17. '17'
  18. '18'
  19. '19'
  20. '20'
  21. '21'
  22. '22'
  23. '23'
  24. '24'
  25. '25'
  26. '26'
  27. '27'
  28. '28'
  29. '29'
  30. '30'
  31. '31'
  32. '32'
  33. '33'
  34. '34'
  35. '35'
  36. '36'
  37. '37'
  38. '38'
  39. '39'
  40. '40'
  41. '41'
  42. '42'
  43. '43'
  44. '44'
  45. '45'
  46. '46'
  47. '47'
  48. '48'
  49. '49'
  50. '50'
  51. '51'
  52. '52'
  53. '53'
  54. '54'
  55. '55'
  56. '56'
  57. '57'
  58. '58'
  59. '59'
  60. '60'
  61. '61'
  62. '62'
  63. '63'
  64. '64'
  65. '65'
  66. '66'
  67. '67'
  68. '68'
  69. '69'
  70. '70'
  71. '71'
  72. '72'
  73. '73'
  74. '74'
  75. '75'
  76. '76'
  77. '77'
  78. '78'
  79. '79'
  80. '80'
  81. '81'
  82. '82'
  83. '83'
  84. '84'
  85. '85'
  86. '86'
  87. '87'
  88. '88'
  89. '89'
  90. '90'
  91. '91'
  92. '92'
  93. '93'
  94. '94'
  95. '95'
  96. '96'
  97. '97'
  98. '98'
  99. '99'
  100. '100'
  101. '101'
  102. '102'
  103. '103'
  104. '104'
  105. '105'
  106. '106'
  107. '107'
  108. '108'
  109. '109'
  110. '110'
  111. '111'
  112. '112'
  113. '113'
  114. '114'
  115. '115'
  116. '116'
  117. '117'
  118. '118'
  119. '119'
  120. '120'
  121. '121'
  122. '122'
  123. '123'
  124. '124'
  125. '125'
  126. '126'
  127. '127'
  128. '128'
  129. '129'
  130. '130'
  131. '131'
  132. '132'
  133. '133'
  134. '134'
  135. '135'
  136. '136'
  137. '137'
  138. '138'
  139. '139'
  140. '140'
  141. '141'
  142. '142'
  143. '143'
  144. '144'
  145. '145'
  146. '146'
  147. '147'
  148. '148'
  149. '149'
  150. '150'
  151. '151'
  152. '152'
  153. '153'
  154. '154'
  155. '155'
  156. '156'
  157. '157'
  158. '158'
  159. '159'
  160. '160'
  161. '161'
  162. '162'
  163. '163'
  164. '164'
  165. '165'
  166. '166'
  167. '167'
  168. '168'
  169. '169'
  170. '170'
  171. '171'
  172. '172'
  173. '173'
  174. '174'
  175. '175'
  176. '176'
  177. '177'
  178. '178'
  179. '179'
  180. '180'
  181. '181'
  182. '182'
  183. '183'
  184. '184'
  185. '185'
  186. '186'
  187. '187'
  188. '188'
  189. '189'
  190. '190'
  191. '191'
  192. '192'
  193. '193'
  194. '194'
  195. '195'
  196. '196'
  197. '197'
  198. '198'
  199. '199'
  200. '200'
  201. ...
  202. '9801'
  203. '9802'
  204. '9803'
  205. '9804'
  206. '9805'
  207. '9806'
  208. '9807'
  209. '9808'
  210. '9809'
  211. '9810'
  212. '9811'
  213. '9812'
  214. '9813'
  215. '9814'
  216. '9815'
  217. '9816'
  218. '9817'
  219. '9818'
  220. '9819'
  221. '9820'
  222. '9821'
  223. '9822'
  224. '9823'
  225. '9824'
  226. '9825'
  227. '9826'
  228. '9827'
  229. '9828'
  230. '9829'
  231. '9830'
  232. '9831'
  233. '9832'
  234. '9833'
  235. '9834'
  236. '9835'
  237. '9836'
  238. '9837'
  239. '9838'
  240. '9839'
  241. '9840'
  242. '9841'
  243. '9842'
  244. '9843'
  245. '9844'
  246. '9845'
  247. '9846'
  248. '9847'
  249. '9848'
  250. '9849'
  251. '9850'
  252. '9851'
  253. '9852'
  254. '9853'
  255. '9854'
  256. '9855'
  257. '9856'
  258. '9857'
  259. '9858'
  260. '9859'
  261. '9860'
  262. '9861'
  263. '9862'
  264. '9863'
  265. '9864'
  266. '9865'
  267. '9866'
  268. '9867'
  269. '9868'
  270. '9869'
  271. '9870'
  272. '9871'
  273. '9872'
  274. '9873'
  275. '9874'
  276. '9875'
  277. '9876'
  278. '9877'
  279. '9878'
  280. '9879'
  281. '9880'
  282. '9881'
  283. '9882'
  284. '9883'
  285. '9884'
  286. '9885'
  287. '9886'
  288. '9887'
  289. '9888'
  290. '9889'
  291. '9890'
  292. '9891'
  293. '9892'
  294. '9893'
  295. '9894'
  296. '9895'
  297. '9896'
  298. '9897'
  299. '9898'
  300. '9899'
  301. '9900'
  302. '9901'
  303. '9902'
  304. '9903'
  305. '9904'
  306. '9905'
  307. '9906'
  308. '9907'
  309. '9908'
  310. '9909'
  311. '9910'
  312. '9911'
  313. '9912'
  314. '9913'
  315. '9914'
  316. '9915'
  317. '9916'
  318. '9917'
  319. '9918'
  320. '9919'
  321. '9920'
  322. '9921'
  323. '9922'
  324. '9923'
  325. '9924'
  326. '9925'
  327. '9926'
  328. '9927'
  329. '9928'
  330. '9929'
  331. '9930'
  332. '9931'
  333. '9932'
  334. '9933'
  335. '9934'
  336. '9935'
  337. '9936'
  338. '9937'
  339. '9938'
  340. '9939'
  341. '9940'
  342. '9941'
  343. '9942'
  344. '9943'
  345. '9944'
  346. '9945'
  347. '9946'
  348. '9947'
  349. '9948'
  350. '9949'
  351. '9950'
  352. '9951'
  353. '9952'
  354. '9953'
  355. '9954'
  356. '9955'
  357. '9956'
  358. '9957'
  359. '9958'
  360. '9959'
  361. '9960'
  362. '9961'
  363. '9962'
  364. '9963'
  365. '9964'
  366. '9965'
  367. '9966'
  368. '9967'
  369. '9968'
  370. '9969'
  371. '9970'
  372. '9971'
  373. '9972'
  374. '9973'
  375. '9974'
  376. '9975'
  377. '9976'
  378. '9977'
  379. '9978'
  380. '9979'
  381. '9980'
  382. '9981'
  383. '9982'
  384. '9983'
  385. '9984'
  386. '9985'
  387. '9986'
  388. '9987'
  389. '9988'
  390. '9989'
  391. '9990'
  392. '9991'
  393. '9992'
  394. '9993'
  395. '9994'
  396. '9995'
  397. '9996'
  398. '9997'
  399. '9998'
  400. '9999'
  401. '10000'

This code extracts a subset of columns from the NHANES dataset and renames one of them:

  • The %>% pipe operator passes the NHANES dataset into the select() function from dplyr.

  • select(ID, Age, BMI, BloodPressure = BPSysAve, SurveyYr, Gender):

    • Extracts the columns: ID, Age, BMI, BPSysAve, SurveyYr, and Gender.

    • Renames the column BPSysAve to BloodPressure while subsetting.

The resulting simplified dataset is stored in a new tibble called nhanes.

  • head(nhanes) displays the first six rows of the new subset to confirm the selection and renaming.

# Extract only the columns Age, BMI, and BPSysAve, SurveyYr, and Gender
#renamed BPSysAve as BloodPressure while subsetting data
nhanes <- NHANES %>% select(ID, Age, BMI, BloodPressure = BPSysAve, SurveyYr, Gender)
head(nhanes)
A tibble: 6 x 6
IDAgeBMIBloodPressureSurveyYrGender
<dbl><dbl><dbl><dbl><chr><chr>
516243432.221132009_10male
516243432.221132009_10male
516243432.221132009_10male
51625 415.30 NA2009_10male
516304930.571122009_10female
51638 916.82 862009_10male

This code renames multiple columns in the nhanes dataset using the rename() function from dplyr:

  • The %>% pipe passes the nhanes tibble into the rename() function.

  • Inside rename():

    • BP = BloodPressure renames the BloodPressure column to BP.

    • Age_yr = Age renames the Age column to Age_yr.

The updated dataset with the new column names is saved back into nhanes.

  • head(nhanes) displays the first six rows to confirm the column name changes.

#rename multiple columns of the dataset after subsetting data -- using 'rename' function from dplyr
nhanes <- nhanes %>% 
  rename(
     BP = BloodPressure,
     Age_yr = Age
  )
head(nhanes)
A tibble: 6 x 6
IDAge_yrBMIBPSurveyYrGender
<dbl><dbl><dbl><dbl><chr><chr>
516243432.221132009_10male
516243432.221132009_10male
516243432.221132009_10male
51625 415.30 NA2009_10male
516304930.571122009_10female
51638 916.82 862009_10male

This code demonstrates different ways to access columns in the nhanes tibble:

  • nhanes$ID — Accesses the ID column directly as a vector. This is one of the most common and convenient ways to extract a single column.

  • nhanes['ID'] — Returns the ID column as a tibble with one column. By default, only the first 10 rows are displayed. To see more, you can use print(nhanes['ID'], n = ...).

  • nhanes[['ID']] — Extracts the ID column as a vector, similar to nhanes$ID, but uses double brackets. This method is especially useful when accessing columns programmatically using variables.

# Ways to access columns
nhanes$ID   # same as nhanes[['ID']]
print(nhanes['ID'])  # prints first 10 values, use print(colname, n=...) to see more rows
nhanes[['ID']]
  1. '51624'
  2. '51624'
  3. '51624'
  4. '51625'
  5. '51630'
  6. '51638'
  7. '51646'
  8. '51647'
  9. '51647'
  10. '51647'
  11. '51654'
  12. '51656'
  13. '51657'
  14. '51659'
  15. '51666'
  16. '51667'
  17. '51671'
  18. '51677'
  19. '51678'
  20. '51679'
  21. '51685'
  22. '51685'
  23. '51691'
  24. '51692'
  25. '51692'
  26. '51694'
  27. '51695'
  28. '51701'
  29. '51702'
  30. '51702'
  31. '51707'
  32. '51710'
  33. '51711'
  34. '51711'
  35. '51715'
  36. '51718'
  37. '51718'
  38. '51719'
  39. '51720'
  40. '51720'
  41. '51722'
  42. '51722'
  43. '51722'
  44. '51722'
  45. '51723'
  46. '51724'
  47. '51731'
  48. '51732'
  49. '51734'
  50. '51741'
  51. '51741'
  52. '51743'
  53. '51743'
  54. '51745'
  55. '51748'
  56. '51752'
  57. '51753'
  58. '51754'
  59. '51754'
  60. '51754'
  61. '51755'
  62. '51758'
  63. '51760'
  64. '51761'
  65. '51761'
  66. '51764'
  67. '51764'
  68. '51764'
  69. '51765'
  70. '51767'
  71. '51767'
  72. '51768'
  73. '51768'
  74. '51771'
  75. '51772'
  76. '51774'
  77. '51774'
  78. '51774'
  79. '51776'
  80. '51780'
  81. '51780'
  82. '51780'
  83. '51781'
  84. '51781'
  85. '51781'
  86. '51781'
  87. '51788'
  88. '51788'
  89. '51789'
  90. '51790'
  91. '51790'
  92. '51794'
  93. '51799'
  94. '51801'
  95. '51803'
  96. '51804'
  97. '51809'
  98. '51810'
  99. '51813'
  100. '51814'
  101. '51819'
  102. '51828'
  103. '51828'
  104. '51829'
  105. '51829'
  106. '51829'
  107. '51832'
  108. '51832'
  109. '51832'
  110. '51840'
  111. '51845'
  112. '51846'
  113. '51846'
  114. '51849'
  115. '51851'
  116. '51856'
  117. '51857'
  118. '51857'
  119. '51857'
  120. '51857'
  121. '51861'
  122. '51862'
  123. '51863'
  124. '51868'
  125. '51875'
  126. '51888'
  127. '51892'
  128. '51893'
  129. '51896'
  130. '51898'
  131. '51899'
  132. '51899'
  133. '51899'
  134. '51905'
  135. '51905'
  136. '51906'
  137. '51907'
  138. '51910'
  139. '51911'
  140. '51911'
  141. '51912'
  142. '51921'
  143. '51928'
  144. '51933'
  145. '51943'
  146. '51943'
  147. '51944'
  148. '51944'
  149. '51945'
  150. '51951'
  151. '51951'
  152. '51952'
  153. '51954'
  154. '51954'
  155. '51958'
  156. '51958'
  157. '51958'
  158. '51958'
  159. '51959'
  160. '51961'
  161. '51962'
  162. '51963'
  163. '51963'
  164. '51964'
  165. '51966'
  166. '51970'
  167. '51971'
  168. '51973'
  169. '51973'
  170. '51974'
  171. '51975'
  172. '51976'
  173. '51976'
  174. '51979'
  175. '51982'
  176. '51982'
  177. '51983'
  178. '51984'
  179. '51985'
  180. '51985'
  181. '51991'
  182. '51996'
  183. '51996'
  184. '51997'
  185. '51997'
  186. '52004'
  187. '52009'
  188. '52009'
  189. '52013'
  190. '52013'
  191. '52016'
  192. '52017'
  193. '52017'
  194. '52019'
  195. '52020'
  196. '52022'
  197. '52023'
  198. '52023'
  199. '52027'
  200. '52030'
  201. ...
  202. '71531'
  203. '71531'
  204. '71531'
  205. '71531'
  206. '71532'
  207. '71542'
  208. '71545'
  209. '71547'
  210. '71547'
  211. '71552'
  212. '71560'
  213. '71564'
  214. '71565'
  215. '71567'
  216. '71567'
  217. '71567'
  218. '71568'
  219. '71569'
  220. '71570'
  221. '71570'
  222. '71572'
  223. '71573'
  224. '71575'
  225. '71578'
  226. '71578'
  227. '71578'
  228. '71581'
  229. '71581'
  230. '71587'
  231. '71588'
  232. '71589'
  233. '71589'
  234. '71592'
  235. '71594'
  236. '71594'
  237. '71596'
  238. '71597'
  239. '71597'
  240. '71598'
  241. '71599'
  242. '71604'
  243. '71605'
  244. '71611'
  245. '71611'
  246. '71611'
  247. '71613'
  248. '71619'
  249. '71624'
  250. '71632'
  251. '71637'
  252. '71637'
  253. '71637'
  254. '71638'
  255. '71641'
  256. '71641'
  257. '71644'
  258. '71645'
  259. '71645'
  260. '71645'
  261. '71646'
  262. '71654'
  263. '71654'
  264. '71654'
  265. '71656'
  266. '71656'
  267. '71656'
  268. '71657'
  269. '71657'
  270. '71658'
  271. '71661'
  272. '71662'
  273. '71662'
  274. '71664'
  275. '71667'
  276. '71671'
  277. '71671'
  278. '71675'
  279. '71675'
  280. '71675'
  281. '71676'
  282. '71678'
  283. '71678'
  284. '71679'
  285. '71684'
  286. '71691'
  287. '71691'
  288. '71691'
  289. '71693'
  290. '71697'
  291. '71698'
  292. '71698'
  293. '71699'
  294. '71701'
  295. '71701'
  296. '71702'
  297. '71704'
  298. '71705'
  299. '71707'
  300. '71721'
  301. '71721'
  302. '71725'
  303. '71729'
  304. '71730'
  305. '71732'
  306. '71733'
  307. '71736'
  308. '71737'
  309. '71740'
  310. '71744'
  311. '71744'
  312. '71745'
  313. '71754'
  314. '71755'
  315. '71756'
  316. '71756'
  317. '71759'
  318. '71762'
  319. '71763'
  320. '71763'
  321. '71763'
  322. '71764'
  323. '71764'
  324. '71766'
  325. '71767'
  326. '71767'
  327. '71768'
  328. '71769'
  329. '71769'
  330. '71773'
  331. '71775'
  332. '71775'
  333. '71782'
  334. '71784'
  335. '71785'
  336. '71786'
  337. '71787'
  338. '71788'
  339. '71792'
  340. '71793'
  341. '71793'
  342. '71794'
  343. '71796'
  344. '71796'
  345. '71797'
  346. '71797'
  347. '71799'
  348. '71799'
  349. '71802'
  350. '71808'
  351. '71809'
  352. '71810'
  353. '71812'
  354. '71816'
  355. '71820'
  356. '71822'
  357. '71823'
  358. '71823'
  359. '71823'
  360. '71823'
  361. '71825'
  362. '71826'
  363. '71826'
  364. '71828'
  365. '71833'
  366. '71835'
  367. '71839'
  368. '71847'
  369. '71847'
  370. '71849'
  371. '71852'
  372. '71855'
  373. '71855'
  374. '71857'
  375. '71857'
  376. '71860'
  377. '71868'
  378. '71868'
  379. '71868'
  380. '71868'
  381. '71869'
  382. '71869'
  383. '71869'
  384. '71873'
  385. '71875'
  386. '71879'
  387. '71880'
  388. '71882'
  389. '71898'
  390. '71907'
  391. '71907'
  392. '71907'
  393. '71908'
  394. '71908'
  395. '71909'
  396. '71909'
  397. '71909'
  398. '71910'
  399. '71911'
  400. '71915'
  401. '71915'
# A tibble: 10,000 x 1
   ID   
   <chr>
 1 51624
 2 51624
 3 51624
 4 51625
 5 51630
 6 51638
 7 51646
 8 51647
 9 51647
10 51647
# i 9,990 more rows
  1. '51624'
  2. '51624'
  3. '51624'
  4. '51625'
  5. '51630'
  6. '51638'
  7. '51646'
  8. '51647'
  9. '51647'
  10. '51647'
  11. '51654'
  12. '51656'
  13. '51657'
  14. '51659'
  15. '51666'
  16. '51667'
  17. '51671'
  18. '51677'
  19. '51678'
  20. '51679'
  21. '51685'
  22. '51685'
  23. '51691'
  24. '51692'
  25. '51692'
  26. '51694'
  27. '51695'
  28. '51701'
  29. '51702'
  30. '51702'
  31. '51707'
  32. '51710'
  33. '51711'
  34. '51711'
  35. '51715'
  36. '51718'
  37. '51718'
  38. '51719'
  39. '51720'
  40. '51720'
  41. '51722'
  42. '51722'
  43. '51722'
  44. '51722'
  45. '51723'
  46. '51724'
  47. '51731'
  48. '51732'
  49. '51734'
  50. '51741'
  51. '51741'
  52. '51743'
  53. '51743'
  54. '51745'
  55. '51748'
  56. '51752'
  57. '51753'
  58. '51754'
  59. '51754'
  60. '51754'
  61. '51755'
  62. '51758'
  63. '51760'
  64. '51761'
  65. '51761'
  66. '51764'
  67. '51764'
  68. '51764'
  69. '51765'
  70. '51767'
  71. '51767'
  72. '51768'
  73. '51768'
  74. '51771'
  75. '51772'
  76. '51774'
  77. '51774'
  78. '51774'
  79. '51776'
  80. '51780'
  81. '51780'
  82. '51780'
  83. '51781'
  84. '51781'
  85. '51781'
  86. '51781'
  87. '51788'
  88. '51788'
  89. '51789'
  90. '51790'
  91. '51790'
  92. '51794'
  93. '51799'
  94. '51801'
  95. '51803'
  96. '51804'
  97. '51809'
  98. '51810'
  99. '51813'
  100. '51814'
  101. '51819'
  102. '51828'
  103. '51828'
  104. '51829'
  105. '51829'
  106. '51829'
  107. '51832'
  108. '51832'
  109. '51832'
  110. '51840'
  111. '51845'
  112. '51846'
  113. '51846'
  114. '51849'
  115. '51851'
  116. '51856'
  117. '51857'
  118. '51857'
  119. '51857'
  120. '51857'
  121. '51861'
  122. '51862'
  123. '51863'
  124. '51868'
  125. '51875'
  126. '51888'
  127. '51892'
  128. '51893'
  129. '51896'
  130. '51898'
  131. '51899'
  132. '51899'
  133. '51899'
  134. '51905'
  135. '51905'
  136. '51906'
  137. '51907'
  138. '51910'
  139. '51911'
  140. '51911'
  141. '51912'
  142. '51921'
  143. '51928'
  144. '51933'
  145. '51943'
  146. '51943'
  147. '51944'
  148. '51944'
  149. '51945'
  150. '51951'
  151. '51951'
  152. '51952'
  153. '51954'
  154. '51954'
  155. '51958'
  156. '51958'
  157. '51958'
  158. '51958'
  159. '51959'
  160. '51961'
  161. '51962'
  162. '51963'
  163. '51963'
  164. '51964'
  165. '51966'
  166. '51970'
  167. '51971'
  168. '51973'
  169. '51973'
  170. '51974'
  171. '51975'
  172. '51976'
  173. '51976'
  174. '51979'
  175. '51982'
  176. '51982'
  177. '51983'
  178. '51984'
  179. '51985'
  180. '51985'
  181. '51991'
  182. '51996'
  183. '51996'
  184. '51997'
  185. '51997'
  186. '52004'
  187. '52009'
  188. '52009'
  189. '52013'
  190. '52013'
  191. '52016'
  192. '52017'
  193. '52017'
  194. '52019'
  195. '52020'
  196. '52022'
  197. '52023'
  198. '52023'
  199. '52027'
  200. '52030'
  201. ...
  202. '71531'
  203. '71531'
  204. '71531'
  205. '71531'
  206. '71532'
  207. '71542'
  208. '71545'
  209. '71547'
  210. '71547'
  211. '71552'
  212. '71560'
  213. '71564'
  214. '71565'
  215. '71567'
  216. '71567'
  217. '71567'
  218. '71568'
  219. '71569'
  220. '71570'
  221. '71570'
  222. '71572'
  223. '71573'
  224. '71575'
  225. '71578'
  226. '71578'
  227. '71578'
  228. '71581'
  229. '71581'
  230. '71587'
  231. '71588'
  232. '71589'
  233. '71589'
  234. '71592'
  235. '71594'
  236. '71594'
  237. '71596'
  238. '71597'
  239. '71597'
  240. '71598'
  241. '71599'
  242. '71604'
  243. '71605'
  244. '71611'
  245. '71611'
  246. '71611'
  247. '71613'
  248. '71619'
  249. '71624'
  250. '71632'
  251. '71637'
  252. '71637'
  253. '71637'
  254. '71638'
  255. '71641'
  256. '71641'
  257. '71644'
  258. '71645'
  259. '71645'
  260. '71645'
  261. '71646'
  262. '71654'
  263. '71654'
  264. '71654'
  265. '71656'
  266. '71656'
  267. '71656'
  268. '71657'
  269. '71657'
  270. '71658'
  271. '71661'
  272. '71662'
  273. '71662'
  274. '71664'
  275. '71667'
  276. '71671'
  277. '71671'
  278. '71675'
  279. '71675'
  280. '71675'
  281. '71676'
  282. '71678'
  283. '71678'
  284. '71679'
  285. '71684'
  286. '71691'
  287. '71691'
  288. '71691'
  289. '71693'
  290. '71697'
  291. '71698'
  292. '71698'
  293. '71699'
  294. '71701'
  295. '71701'
  296. '71702'
  297. '71704'
  298. '71705'
  299. '71707'
  300. '71721'
  301. '71721'
  302. '71725'
  303. '71729'
  304. '71730'
  305. '71732'
  306. '71733'
  307. '71736'
  308. '71737'
  309. '71740'
  310. '71744'
  311. '71744'
  312. '71745'
  313. '71754'
  314. '71755'
  315. '71756'
  316. '71756'
  317. '71759'
  318. '71762'
  319. '71763'
  320. '71763'
  321. '71763'
  322. '71764'
  323. '71764'
  324. '71766'
  325. '71767'
  326. '71767'
  327. '71768'
  328. '71769'
  329. '71769'
  330. '71773'
  331. '71775'
  332. '71775'
  333. '71782'
  334. '71784'
  335. '71785'
  336. '71786'
  337. '71787'
  338. '71788'
  339. '71792'
  340. '71793'
  341. '71793'
  342. '71794'
  343. '71796'
  344. '71796'
  345. '71797'
  346. '71797'
  347. '71799'
  348. '71799'
  349. '71802'
  350. '71808'
  351. '71809'
  352. '71810'
  353. '71812'
  354. '71816'
  355. '71820'
  356. '71822'
  357. '71823'
  358. '71823'
  359. '71823'
  360. '71823'
  361. '71825'
  362. '71826'
  363. '71826'
  364. '71828'
  365. '71833'
  366. '71835'
  367. '71839'
  368. '71847'
  369. '71847'
  370. '71849'
  371. '71852'
  372. '71855'
  373. '71855'
  374. '71857'
  375. '71857'
  376. '71860'
  377. '71868'
  378. '71868'
  379. '71868'
  380. '71868'
  381. '71869'
  382. '71869'
  383. '71869'
  384. '71873'
  385. '71875'
  386. '71879'
  387. '71880'
  388. '71882'
  389. '71898'
  390. '71907'
  391. '71907'
  392. '71907'
  393. '71908'
  394. '71908'
  395. '71909'
  396. '71909'
  397. '71909'
  398. '71910'
  399. '71911'
  400. '71915'
  401. '71915'

This code shows different ways to access specific elements, rows, or columns of the nhanes dataset using standard indexing:

  • nhanes[2, "Gender"] — Retrieves the value from row 2, column “Gender”, returning a single element.

  • nhanes[ , c("SurveyYr", "Gender")] — Selects all rows but only the "SurveyYr" and "Gender" columns.

  • nhanes[1:6, ] — Selects rows 1 through 6 and all columns.

  • nhanes[ , ] — Returns the entire dataset. Including empty brackets like this means “all rows” and “all columns.”

This indexing style works similarly to data frames in base R but is fully compatible with tibbles.

# Accessing elements of dataset 
nhanes[2, "Gender"]  # a single element
nhanes[ , c("SurveyYr", "Gender")] # all rows, two columns
nhanes[1:6, ]             # rows 1-6, all columns
nhanes[ , ]               # everything
A tibble: 1 x 1
Gender
<chr>
male
A tibble: 10000 x 2
SurveyYrGender
<chr><chr>
2009_10male
2009_10male
2009_10male
2009_10male
2009_10female
2009_10male
2009_10male
2009_10female
2009_10female
2009_10female
2009_10male
2009_10male
2009_10male
2009_10female
2009_10female
2009_10male
2009_10female
2009_10male
2009_10male
2009_10male
2009_10female
2009_10female
2009_10female
2009_10male
2009_10male
2009_10male
2009_10male
2009_10male
2009_10male
2009_10male
......
2011_12female
2011_12female
2011_12male
2011_12male
2011_12male
2011_12male
2011_12male
2011_12male
2011_12male
2011_12male
2011_12male
2011_12male
2011_12female
2011_12male
2011_12male
2011_12male
2011_12female
2011_12female
2011_12male
2011_12male
2011_12male
2011_12female
2011_12female
2011_12male
2011_12male
2011_12male
2011_12female
2011_12male
2011_12male
2011_12male
A tibble: 6 x 6
IDAge_yrBMIBPSurveyYrGender
<dbl><dbl><dbl><dbl><chr><chr>
516243432.221132009_10male
516243432.221132009_10male
516243432.221132009_10male
51625 415.30 NA2009_10male
516304930.571122009_10female
51638 916.82 862009_10male
A tibble: 10000 x 6
IDAge_yrBMIBPSurveyYrGender
<dbl><dbl><dbl><dbl><chr><chr>
516243432.221132009_10male
516243432.221132009_10male
516243432.221132009_10male
51625 415.30 NA2009_10male
516304930.571122009_10female
51638 916.82 862009_10male
51646 820.641072009_10male
516474527.241182009_10female
516474527.241182009_10female
516474527.241182009_10female
516546623.671112009_10male
516565823.691042009_10male
516575426.031342009_10male
516591019.201042009_10female
516665826.221272009_10female
516675026.601422009_10male
51671 927.40 932009_10female
516773328.541282009_10male
516786025.841522009_10male
516791624.741262009_10male
516855619.73 952009_10female
516855619.73 952009_10female
516915720.661222009_10female
516925436.32 902009_10male
516925436.32 902009_10male
516943835.841472009_10male
51695 824.32 932009_10male
517013625.951172009_10male
517024431.431442009_10male
517024431.431442009_10male
..................
718556235.91432011_12female
718556235.91432011_12female
718573923.81182011_12male
718573923.81182011_12male
718602829.81142011_12male
718684328.41122011_12male
718684328.41122011_12male
718684328.41122011_12male
718684328.41122011_12male
718696937.81082011_12male
718696937.81082011_12male
718696937.81082011_12male
718732029.31032011_12female
718754228.51022011_12male
718792422.41292011_12male
718804637.51272011_12male
718826027.31162011_12female
718986529.41512011_12female
719078023.21482011_12male
719078023.21482011_12male
719078023.21482011_12male
719086635.11142011_12female
719086635.11142011_12female
719092829.41242011_12male
719092829.41242011_12male
719092829.41242011_12male
71910 0 NA NA2011_12female
719112731.31332011_12male
719156027.51472011_12male
719156027.51472011_12male

This code converts the data type of the ID column in the nhanes dataset:

  • as.character(nhanes$ID) converts the ID column from its current type (double, meaning numeric) to a character (text) type.

  • The result is assigned back to nhanes$ID, replacing the original column with its character version.

This is often done when ID numbers should be treated as text rather than numerical values for calculations.

# Change the column type of "ID" from "double" to "character"
nhanes$ID <- as.character(nhanes$ID)

This code inspects the nhanes dataset after modifying the ID column:

  • head(nhanes) displays the first six rows to quickly review the current state of the data.

  • dim(nhanes) returns the dimensions of the dataset as a numeric vector, showing the total number of rows and columns (rows × columns).

  • str(nhanes) provides a compact structure summary of the dataset, detailing each column’s name, data type, and a preview of its values.

These commands help confirm that the data looks correct and to understand its overall structure.

# Display the first few rows of the subset after converting column 'ID' to character
head(nhanes)
dim(nhanes) #dimension of the data (Total_rows x Total_columns)
str(nhanes) # Details of the data by columns
A tibble: 6 x 6
IDAge_yrBMIBPSurveyYrGender
<chr><dbl><dbl><dbl><chr><chr>
516243432.221132009_10male
516243432.221132009_10male
516243432.221132009_10male
51625 415.30 NA2009_10male
516304930.571122009_10female
51638 916.82 862009_10male
  1. 10000
  2. 6
tibble [10,000 x 6] (S3: tbl_df/tbl/data.frame)
 $ ID      : chr [1:10000] "51624" "51624" "51624" "51625" ...
 $ Age_yr  : num [1:10000] 34 34 34 4 49 9 8 45 45 45 ...
 $ BMI     : num [1:10000] 32.2 32.2 32.2 15.3 30.6 ...
 $ BP      : num [1:10000] 113 113 113 NA 112 86 107 118 118 118 ...
 $ SurveyYr: chr [1:10000] "2009_10" "2009_10" "2009_10" "2009_10" ...
 $ Gender  : chr [1:10000] "male" "male" "male" "male" ...

This code checks the type of the nhanes object in R:

  • class(nhanes) returns the class of the object, which indicates what kind of R object it is (likely "tbl_df", "tbl", "data.frame" for a tibble).

  • typeof(nhanes) returns the internal storage mode of the object, showing the low-level data type used to store it (usually "list" for tibbles and data frames).

Together, these functions help you understand both the high-level object type and the underlying storage structure.

#find the class of the data object "nhanes"
class(nhanes)
typeof(nhanes)
  1. 'tbl_df'
  2. 'tbl'
  3. 'data.frame'
'list'

This code creates a frequency table of the Gender column in the nhanes dataset:

  • table(nhanes$Gender) counts the number of occurrences of each unique value in the Gender column.

  • It returns a summary showing how many rows correspond to each gender category, helping to understand the distribution of genders in the data.

# Using 'table' function for frequency table
table(nhanes$Gender)
female   male 
  5020   4980 

This code generates summary statistics for the nhanes dataset and saves the output to a text file, while also printing the summary in the notebook:

  • capture.output({ ... }) captures all printed output inside the braces into a character vector summary_text.

  • Inside the capture block:

    • cat('Summary statistics of the data before cleaning:....\n') prints a header message.

    • summary(as.data.frame(nhanes)) generates summary statistics for the dataset converted to a base data frame (which helps avoid tibble printing quirks).

  • writeLines(summary_text, 'sumary_stats_before.txt') writes the captured summary text to a file named sumary_stats_before.txt.

  • Finally, summary(nhanes) prints the summary directly to the console or notebook output.

This approach ensures you have the summary saved for later review while also displaying it immediately.

# Find the summary statistics of the dataset and save the output in another file
summary_text <- capture.output({
  cat('Summary statistics of the data before cleaning:....\n')
  summary(as.data.frame(nhanes))
})

writeLines(summary_text, 'sumary_stats_before.txt')

summary(nhanes)
      ID                Age_yr           BMI              BP       
 Length:10000       Min.   : 0.00   Min.   :12.88   Min.   : 76.0  
 Class :character   1st Qu.:17.00   1st Qu.:21.58   1st Qu.:106.0  
 Mode  :character   Median :36.00   Median :25.98   Median :116.0  
                    Mean   :36.74   Mean   :26.66   Mean   :118.2  
                    3rd Qu.:54.00   3rd Qu.:30.89   3rd Qu.:127.0  
                    Max.   :80.00   Max.   :81.25   Max.   :226.0  
                                    NA's   :366     NA's   :1449   
   SurveyYr            Gender         
 Length:10000       Length:10000      
 Class :character   Class :character  
 Mode  :character   Mode  :character  
                                      
                                      
                                      
                                      

This code demonstrates how to split and then recombine a column in the nhanes dataset using tidyr functions:

  • separate(nhanes, SurveyYr, into = c("Year1", "Year2"), sep = '_', remove = TRUE):

    • Splits the SurveyYr column into two new columns named Year1 and Year2 by splitting at the underscore ('_').

    • The original SurveyYr column is removed (remove = TRUE).

    • The resulting dataset is stored as nhanes1.

  • head(nhanes1) shows the first six rows of this modified dataset with the split columns.

  • unite(nhanes1, "SurveyYr", c("Year1", "Year2"), sep = "_"):

    • Combines the two columns Year1 and Year2 back into a single SurveyYr column, joining them with an underscore.

    • The result is stored back into nhanes.

  • head(nhanes) shows the first six rows of the dataset after recombining.

# Using function 'unite' and 'separate' for column 'SurveyYr'
nhanes1 <- separate(nhanes, SurveyYr, into = c("Year1", "Year2"),
                    sep = '_', remove=TRUE) 
head(nhanes1)

nhanes <- unite(nhanes1, "SurveyYr", c("Year1", "Year2"), sep="_")
head(nhanes)
A tibble: 6 x 7
IDAge_yrBMIBPYear1Year2Gender
<chr><dbl><dbl><dbl><chr><chr><chr>
516243432.22113200910male
516243432.22113200910male
516243432.22113200910male
51625 415.30 NA200910male
516304930.57112200910female
51638 916.82 86200910male
A tibble: 6 x 6
IDAge_yrBMIBPSurveyYrGender
<chr><dbl><dbl><dbl><chr><chr>
516243432.221132009_10male
516243432.221132009_10male
516243432.221132009_10male
51625 415.30 NA2009_10male
516304930.571122009_10female
51638 916.82 862009_10male

Cleaning and Subsetting the Data#

This code checks for duplicate rows in the nhanes dataset:

  • print('Duplicated rows...') prints a message to indicate the next operation.

  • duplicated(nhanes) returns a logical vector indicating which rows in the dataset are duplicates of previous rows:

    • TRUE means the row is a duplicate.

    • FALSE means it’s unique or the first occurrence.

This helps identify if there are any repeated rows in the data.

# Identify duplicate elements
print('Duplicated rows...')
print(duplicated(nhanes))
[1] "Duplicated rows..."
    [1] FALSE  TRUE  TRUE FALSE FALSE FALSE FALSE FALSE  TRUE  TRUE FALSE FALSE
   [13] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE FALSE FALSE
   [25]  TRUE FALSE FALSE FALSE FALSE  TRUE FALSE FALSE FALSE  TRUE FALSE FALSE
   [37]  TRUE FALSE FALSE  TRUE FALSE  TRUE  TRUE  TRUE FALSE FALSE FALSE FALSE
   [49] FALSE FALSE  TRUE FALSE  TRUE FALSE FALSE FALSE FALSE FALSE  TRUE  TRUE
   [61] FALSE FALSE FALSE FALSE  TRUE FALSE  TRUE  TRUE FALSE FALSE  TRUE FALSE
   [73]  TRUE FALSE FALSE FALSE  TRUE  TRUE FALSE FALSE  TRUE  TRUE FALSE  TRUE
   [85]  TRUE  TRUE FALSE  TRUE FALSE FALSE  TRUE FALSE FALSE FALSE FALSE FALSE
   [97] FALSE FALSE FALSE FALSE FALSE FALSE  TRUE FALSE  TRUE  TRUE FALSE  TRUE
  [109]  TRUE FALSE FALSE FALSE  TRUE FALSE FALSE FALSE FALSE  TRUE  TRUE  TRUE
  [121] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE
  [133]  TRUE FALSE  TRUE FALSE FALSE FALSE FALSE  TRUE FALSE FALSE FALSE FALSE
  [145] FALSE  TRUE FALSE  TRUE FALSE FALSE  TRUE FALSE FALSE  TRUE FALSE  TRUE
  [157]  TRUE  TRUE FALSE FALSE FALSE FALSE  TRUE FALSE FALSE FALSE FALSE FALSE
  [169]  TRUE FALSE FALSE FALSE  TRUE FALSE FALSE  TRUE FALSE FALSE FALSE  TRUE
  [181] FALSE FALSE  TRUE FALSE  TRUE FALSE FALSE  TRUE FALSE  TRUE FALSE FALSE
  [193]  TRUE FALSE FALSE FALSE FALSE  TRUE FALSE FALSE FALSE FALSE FALSE FALSE
  [205] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE FALSE FALSE FALSE
  [217]  TRUE FALSE  TRUE FALSE  TRUE FALSE FALSE FALSE FALSE  TRUE FALSE FALSE
  [229] FALSE  TRUE FALSE FALSE  TRUE FALSE FALSE FALSE  TRUE FALSE FALSE  TRUE
  [241]  TRUE FALSE  TRUE FALSE  TRUE FALSE FALSE FALSE FALSE FALSE  TRUE  TRUE
  [253] FALSE FALSE FALSE  TRUE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE FALSE
  [265] FALSE FALSE FALSE FALSE FALSE  TRUE FALSE FALSE FALSE FALSE FALSE FALSE
  [277]  TRUE FALSE  TRUE FALSE FALSE FALSE  TRUE FALSE FALSE  TRUE  TRUE FALSE
  [289] FALSE  TRUE  TRUE FALSE  TRUE FALSE FALSE FALSE FALSE FALSE  TRUE  TRUE
  [301]  TRUE FALSE FALSE  TRUE FALSE FALSE FALSE  TRUE FALSE  TRUE FALSE FALSE
  [313]  TRUE FALSE FALSE  TRUE FALSE FALSE FALSE FALSE FALSE  TRUE FALSE FALSE
  [325] FALSE FALSE FALSE  TRUE FALSE  TRUE FALSE FALSE FALSE FALSE FALSE  TRUE
  [337]  TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE FALSE FALSE
  [349] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE
  [361] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE FALSE
  [373] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE  TRUE FALSE
  [385] FALSE FALSE FALSE  TRUE FALSE FALSE FALSE  TRUE FALSE  TRUE FALSE  TRUE
  [397] FALSE FALSE  TRUE  TRUE FALSE FALSE  TRUE FALSE  TRUE  TRUE FALSE FALSE
  [409]  TRUE FALSE FALSE FALSE  TRUE FALSE FALSE  TRUE FALSE  TRUE  TRUE FALSE
  [421] FALSE FALSE FALSE  TRUE FALSE FALSE FALSE FALSE FALSE  TRUE  TRUE FALSE
  [433]  TRUE FALSE FALSE FALSE  TRUE  TRUE  TRUE FALSE FALSE FALSE FALSE FALSE
  [445] FALSE  TRUE FALSE FALSE FALSE FALSE  TRUE FALSE  TRUE FALSE FALSE FALSE
  [457] FALSE FALSE  TRUE FALSE FALSE FALSE  TRUE  TRUE FALSE FALSE FALSE FALSE
  [469] FALSE FALSE FALSE  TRUE FALSE FALSE  TRUE FALSE FALSE FALSE  TRUE FALSE
  [481]  TRUE FALSE  TRUE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE FALSE  TRUE
  [493] FALSE FALSE  TRUE FALSE FALSE FALSE FALSE FALSE  TRUE  TRUE  TRUE FALSE
  [505] FALSE  TRUE FALSE  TRUE FALSE  TRUE FALSE FALSE FALSE FALSE FALSE FALSE
  [517] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
  [529] FALSE FALSE FALSE  TRUE FALSE FALSE FALSE FALSE  TRUE FALSE FALSE  TRUE
  [541] FALSE FALSE  TRUE FALSE FALSE  TRUE FALSE FALSE FALSE FALSE  TRUE FALSE
  [553] FALSE FALSE FALSE FALSE FALSE FALSE  TRUE FALSE FALSE FALSE FALSE FALSE
  [565] FALSE  TRUE  TRUE FALSE  TRUE  TRUE FALSE FALSE  TRUE FALSE FALSE FALSE
  [577] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE FALSE FALSE
  [589] FALSE FALSE FALSE  TRUE FALSE FALSE  TRUE  TRUE FALSE  TRUE FALSE FALSE
  [601]  TRUE FALSE  TRUE FALSE FALSE  TRUE FALSE FALSE FALSE FALSE FALSE FALSE
  [613] FALSE FALSE FALSE FALSE  TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
  [625] FALSE FALSE FALSE FALSE  TRUE FALSE FALSE FALSE  TRUE FALSE FALSE FALSE
  [637] FALSE  TRUE FALSE FALSE FALSE  TRUE  TRUE FALSE FALSE FALSE  TRUE  TRUE
  [649] FALSE FALSE FALSE FALSE FALSE  TRUE  TRUE FALSE FALSE  TRUE FALSE  TRUE
  [661]  TRUE  TRUE FALSE FALSE FALSE FALSE FALSE  TRUE FALSE  TRUE FALSE FALSE
  [673] FALSE FALSE FALSE  TRUE FALSE FALSE FALSE  TRUE FALSE FALSE  TRUE FALSE
  [685] FALSE  TRUE FALSE  TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
  [697] FALSE  TRUE FALSE  TRUE FALSE  TRUE  TRUE FALSE FALSE FALSE FALSE FALSE
  [709] FALSE FALSE FALSE FALSE  TRUE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE
  [721]  TRUE  TRUE FALSE FALSE FALSE FALSE  TRUE FALSE FALSE FALSE FALSE FALSE
  [733] FALSE  TRUE FALSE FALSE FALSE  TRUE FALSE FALSE FALSE FALSE FALSE  TRUE
  [745] FALSE FALSE  TRUE FALSE FALSE FALSE FALSE FALSE  TRUE FALSE  TRUE FALSE
  [757] FALSE FALSE FALSE FALSE FALSE FALSE  TRUE FALSE FALSE FALSE FALSE FALSE
  [769] FALSE FALSE  TRUE FALSE FALSE FALSE FALSE FALSE  TRUE  TRUE FALSE FALSE
  [781] FALSE  TRUE FALSE FALSE FALSE FALSE  TRUE FALSE FALSE  TRUE FALSE FALSE
  [793]  TRUE FALSE  TRUE FALSE FALSE FALSE  TRUE FALSE  TRUE FALSE FALSE FALSE
  [805] FALSE FALSE  TRUE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE  TRUE  TRUE
  [817] FALSE FALSE FALSE FALSE FALSE  TRUE  TRUE FALSE  TRUE FALSE FALSE FALSE
  [829] FALSE FALSE  TRUE FALSE  TRUE FALSE FALSE  TRUE  TRUE FALSE FALSE  TRUE
  [841] FALSE FALSE  TRUE  TRUE FALSE FALSE  TRUE  TRUE  TRUE  TRUE FALSE FALSE
  [853]  TRUE FALSE FALSE FALSE FALSE  TRUE FALSE  TRUE FALSE FALSE FALSE FALSE
  [865]  TRUE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE FALSE  TRUE FALSE  TRUE
  [877]  TRUE FALSE  TRUE FALSE  TRUE FALSE FALSE FALSE  TRUE  TRUE FALSE FALSE
  [889]  TRUE FALSE FALSE FALSE FALSE  TRUE FALSE  TRUE FALSE  TRUE FALSE  TRUE
  [901] FALSE FALSE FALSE FALSE FALSE FALSE  TRUE FALSE  TRUE FALSE FALSE FALSE
  [913] FALSE  TRUE  TRUE  TRUE FALSE FALSE FALSE FALSE FALSE  TRUE FALSE FALSE
  [925]  TRUE FALSE  TRUE FALSE FALSE  TRUE  TRUE  TRUE FALSE FALSE FALSE FALSE
  [937] FALSE  TRUE FALSE  TRUE  TRUE FALSE FALSE  TRUE FALSE FALSE  TRUE FALSE
  [949]  TRUE FALSE  TRUE  TRUE FALSE FALSE  TRUE FALSE FALSE FALSE FALSE FALSE
  [961] FALSE FALSE FALSE FALSE FALSE  TRUE FALSE  TRUE  TRUE FALSE FALSE FALSE
  [973] FALSE FALSE FALSE FALSE FALSE  TRUE FALSE FALSE FALSE FALSE  TRUE  TRUE
  [985]  TRUE  TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE FALSE FALSE
  [997] FALSE FALSE  TRUE  TRUE  TRUE  TRUE FALSE  TRUE FALSE  TRUE  TRUE FALSE
 [1009] FALSE  TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE  TRUE  TRUE
 [1021] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE FALSE
 [1033]  TRUE FALSE  TRUE  TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
 [1045] FALSE FALSE FALSE  TRUE FALSE FALSE  TRUE FALSE  TRUE FALSE FALSE FALSE
 [1057] FALSE FALSE FALSE  TRUE FALSE  TRUE FALSE FALSE  TRUE FALSE  TRUE FALSE
 [1069] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE FALSE  TRUE FALSE
 [1081] FALSE FALSE FALSE FALSE  TRUE FALSE FALSE  TRUE FALSE FALSE  TRUE FALSE
 [1093] FALSE FALSE  TRUE FALSE  TRUE FALSE FALSE FALSE  TRUE FALSE FALSE  TRUE
 [1105]  TRUE FALSE FALSE FALSE FALSE  TRUE FALSE  TRUE FALSE FALSE FALSE  TRUE
 [1117] FALSE FALSE  TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE  TRUE
 [1129] FALSE  TRUE FALSE FALSE  TRUE FALSE FALSE FALSE FALSE  TRUE FALSE  TRUE
 [1141] FALSE FALSE  TRUE FALSE FALSE  TRUE  TRUE FALSE  TRUE FALSE FALSE FALSE
 [1153]  TRUE  TRUE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE FALSE  TRUE FALSE
 [1165]  TRUE  TRUE FALSE FALSE  TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
 [1177] FALSE FALSE FALSE FALSE  TRUE  TRUE FALSE FALSE FALSE FALSE FALSE FALSE
 [1189] FALSE FALSE  TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
 [1201]  TRUE FALSE FALSE FALSE FALSE  TRUE FALSE FALSE FALSE FALSE FALSE FALSE
 [1213]  TRUE FALSE FALSE FALSE FALSE  TRUE  TRUE FALSE FALSE FALSE FALSE FALSE
 [1225] FALSE  TRUE FALSE FALSE FALSE FALSE  TRUE FALSE FALSE  TRUE FALSE FALSE
 [1237]  TRUE FALSE FALSE  TRUE  TRUE  TRUE  TRUE FALSE FALSE  TRUE FALSE  TRUE
 [1249]  TRUE  TRUE FALSE  TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
 [1261] FALSE  TRUE FALSE FALSE FALSE  TRUE FALSE FALSE  TRUE  TRUE FALSE  TRUE
 [1273] FALSE FALSE  TRUE FALSE  TRUE  TRUE FALSE FALSE  TRUE FALSE FALSE  TRUE
 [1285] FALSE FALSE FALSE FALSE  TRUE  TRUE FALSE FALSE FALSE FALSE  TRUE FALSE
 [1297] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE  TRUE FALSE FALSE
 [1309] FALSE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE FALSE  TRUE FALSE FALSE
 [1321] FALSE FALSE  TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE
 [1333]  TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE  TRUE  TRUE FALSE
 [1345] FALSE FALSE FALSE  TRUE  TRUE FALSE FALSE  TRUE FALSE FALSE FALSE  TRUE
 [1357]  TRUE FALSE FALSE FALSE FALSE  TRUE  TRUE FALSE FALSE FALSE  TRUE  TRUE
 [1369] FALSE FALSE  TRUE  TRUE FALSE FALSE FALSE FALSE FALSE  TRUE FALSE  TRUE
 [1381] FALSE  TRUE FALSE  TRUE FALSE  TRUE FALSE FALSE FALSE FALSE FALSE FALSE
 [1393] FALSE FALSE  TRUE FALSE FALSE  TRUE FALSE  TRUE  TRUE FALSE FALSE FALSE
 [1405] FALSE  TRUE  TRUE FALSE  TRUE FALSE  TRUE FALSE FALSE FALSE  TRUE FALSE
 [1417] FALSE FALSE FALSE  TRUE  TRUE FALSE FALSE FALSE  TRUE FALSE  TRUE FALSE
 [1429] FALSE  TRUE  TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
 [1441] FALSE FALSE  TRUE FALSE  TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
 [1453] FALSE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE FALSE FALSE FALSE  TRUE
 [1465] FALSE FALSE FALSE  TRUE  TRUE FALSE  TRUE FALSE  TRUE FALSE FALSE FALSE
 [1477]  TRUE FALSE  TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
 [1489]  TRUE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE FALSE FALSE FALSE FALSE
 [1501] FALSE FALSE FALSE FALSE FALSE FALSE  TRUE  TRUE FALSE  TRUE FALSE FALSE
 [1513] FALSE FALSE FALSE FALSE FALSE FALSE  TRUE  TRUE  TRUE FALSE  TRUE FALSE
 [1525] FALSE FALSE FALSE FALSE FALSE  TRUE FALSE FALSE FALSE  TRUE FALSE FALSE
 [1537]  TRUE FALSE  TRUE FALSE FALSE  TRUE FALSE FALSE FALSE FALSE FALSE  TRUE
 [1549] FALSE FALSE FALSE FALSE  TRUE  TRUE FALSE  TRUE FALSE  TRUE FALSE FALSE
 [1561] FALSE FALSE FALSE FALSE  TRUE  TRUE FALSE FALSE FALSE  TRUE  TRUE  TRUE
 [1573]  TRUE FALSE FALSE FALSE  TRUE FALSE FALSE FALSE FALSE  TRUE FALSE FALSE
 [1585] FALSE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE FALSE  TRUE  TRUE FALSE
 [1597] FALSE  TRUE  TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE  TRUE
 [1609] FALSE  TRUE  TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE FALSE
 [1621] FALSE FALSE  TRUE FALSE FALSE  TRUE  TRUE  TRUE FALSE  TRUE FALSE FALSE
 [1633]  TRUE  TRUE FALSE  TRUE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE FALSE
 [1645]  TRUE  TRUE FALSE FALSE FALSE FALSE  TRUE  TRUE FALSE FALSE FALSE  TRUE
 [1657] FALSE  TRUE  TRUE FALSE FALSE FALSE FALSE  TRUE FALSE FALSE  TRUE FALSE
 [1669] FALSE FALSE FALSE  TRUE  TRUE  TRUE  TRUE FALSE  TRUE FALSE  TRUE FALSE
 [1681] FALSE FALSE FALSE  TRUE FALSE FALSE  TRUE FALSE FALSE FALSE FALSE FALSE
 [1693] FALSE  TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE FALSE FALSE
 [1705] FALSE  TRUE FALSE FALSE FALSE  TRUE FALSE  TRUE  TRUE  TRUE FALSE FALSE
 [1717] FALSE  TRUE FALSE  TRUE  TRUE  TRUE FALSE FALSE  TRUE FALSE FALSE FALSE
 [1729]  TRUE FALSE FALSE FALSE FALSE  TRUE FALSE  TRUE FALSE  TRUE  TRUE FALSE
 [1741] FALSE  TRUE  TRUE FALSE FALSE FALSE FALSE  TRUE FALSE FALSE FALSE  TRUE
 [1753] FALSE FALSE  TRUE FALSE  TRUE  TRUE FALSE FALSE  TRUE  TRUE FALSE FALSE
 [1765] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
 [1777] FALSE FALSE FALSE FALSE  TRUE FALSE FALSE FALSE FALSE  TRUE FALSE  TRUE
 [1789] FALSE  TRUE FALSE  TRUE  TRUE FALSE FALSE  TRUE  TRUE FALSE  TRUE  TRUE
 [1801] FALSE FALSE FALSE  TRUE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE  TRUE
 [1813] FALSE FALSE FALSE FALSE FALSE  TRUE FALSE FALSE  TRUE FALSE FALSE  TRUE
 [1825] FALSE FALSE  TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
 [1837] FALSE FALSE FALSE FALSE FALSE  TRUE FALSE FALSE  TRUE FALSE FALSE  TRUE
 [1849] FALSE FALSE  TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
 [1861] FALSE FALSE FALSE  TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
 [1873] FALSE FALSE  TRUE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE  TRUE  TRUE
 [1885] FALSE FALSE FALSE FALSE FALSE FALSE  TRUE FALSE FALSE FALSE  TRUE FALSE
 [1897] FALSE FALSE  TRUE  TRUE FALSE  TRUE  TRUE FALSE FALSE  TRUE  TRUE FALSE
 [1909] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE FALSE FALSE  TRUE
 [1921] FALSE FALSE FALSE  TRUE FALSE FALSE  TRUE FALSE  TRUE FALSE FALSE FALSE
 [1933] FALSE  TRUE FALSE FALSE FALSE  TRUE  TRUE FALSE FALSE  TRUE FALSE FALSE
 [1945] FALSE  TRUE FALSE FALSE FALSE FALSE  TRUE  TRUE  TRUE FALSE FALSE FALSE
 [1957] FALSE FALSE FALSE FALSE  TRUE  TRUE  TRUE FALSE FALSE FALSE FALSE FALSE
 [1969]  TRUE  TRUE FALSE  TRUE FALSE FALSE FALSE  TRUE FALSE  TRUE FALSE FALSE
 [1981] FALSE  TRUE  TRUE FALSE FALSE FALSE  TRUE  TRUE FALSE FALSE FALSE  TRUE
 [1993]  TRUE FALSE FALSE FALSE FALSE  TRUE  TRUE  TRUE  TRUE FALSE FALSE  TRUE
 [2005] FALSE  TRUE FALSE FALSE FALSE FALSE  TRUE  TRUE FALSE FALSE FALSE FALSE
 [2017]  TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE FALSE FALSE FALSE
 [2029]  TRUE  TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE
 [2041] FALSE  TRUE  TRUE FALSE FALSE  TRUE FALSE FALSE FALSE FALSE FALSE FALSE
 [2053] FALSE FALSE FALSE  TRUE FALSE FALSE FALSE FALSE FALSE  TRUE FALSE FALSE
 [2065] FALSE FALSE  TRUE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE FALSE FALSE
 [2077]  TRUE  TRUE FALSE FALSE FALSE FALSE  TRUE  TRUE  TRUE FALSE FALSE FALSE
 [2089] FALSE  TRUE FALSE FALSE FALSE  TRUE FALSE FALSE FALSE FALSE  TRUE FALSE
 [2101] FALSE FALSE FALSE  TRUE  TRUE  TRUE FALSE  TRUE FALSE FALSE FALSE  TRUE
 [2113] FALSE  TRUE  TRUE FALSE  TRUE FALSE FALSE  TRUE  TRUE  TRUE FALSE FALSE
 [2125] FALSE  TRUE FALSE FALSE FALSE FALSE  TRUE FALSE FALSE FALSE FALSE FALSE
 [2137] FALSE FALSE  TRUE FALSE FALSE  TRUE FALSE FALSE FALSE FALSE FALSE FALSE
 [2149] FALSE FALSE FALSE FALSE FALSE  TRUE  TRUE FALSE FALSE  TRUE FALSE FALSE
 [2161]  TRUE FALSE  TRUE FALSE  TRUE FALSE  TRUE FALSE FALSE FALSE  TRUE FALSE
 [2173] FALSE FALSE FALSE FALSE FALSE FALSE  TRUE FALSE FALSE FALSE FALSE FALSE
 [2185] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE FALSE FALSE FALSE
 [2197] FALSE FALSE FALSE FALSE  TRUE  TRUE FALSE FALSE FALSE FALSE FALSE FALSE
 [2209] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE FALSE FALSE
 [2221] FALSE FALSE  TRUE  TRUE FALSE FALSE FALSE FALSE  TRUE FALSE FALSE FALSE
 [2233] FALSE  TRUE FALSE FALSE FALSE  TRUE FALSE FALSE  TRUE FALSE  TRUE FALSE
 [2245] FALSE  TRUE FALSE  TRUE  TRUE FALSE FALSE FALSE  TRUE FALSE FALSE FALSE
 [2257]  TRUE FALSE FALSE FALSE FALSE  TRUE FALSE FALSE FALSE  TRUE  TRUE FALSE
 [2269] FALSE FALSE  TRUE  TRUE  TRUE FALSE  TRUE FALSE FALSE FALSE FALSE FALSE
 [2281]  TRUE FALSE FALSE FALSE FALSE  TRUE FALSE FALSE  TRUE FALSE  TRUE FALSE
 [2293]  TRUE FALSE FALSE FALSE  TRUE FALSE  TRUE FALSE FALSE FALSE  TRUE  TRUE
 [2305] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE FALSE
 [2317] FALSE FALSE FALSE  TRUE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE FALSE
 [2329] FALSE FALSE FALSE  TRUE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE  TRUE
 [2341] FALSE FALSE FALSE  TRUE  TRUE FALSE  TRUE FALSE  TRUE  TRUE FALSE  TRUE
 [2353] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE  TRUE FALSE
 [2365] FALSE  TRUE FALSE FALSE  TRUE FALSE FALSE  TRUE FALSE  TRUE FALSE FALSE
 [2377]  TRUE FALSE FALSE  TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
 [2389] FALSE FALSE  TRUE  TRUE FALSE FALSE  TRUE FALSE FALSE FALSE FALSE FALSE
 [2401] FALSE FALSE FALSE FALSE FALSE FALSE  TRUE  TRUE FALSE  TRUE  TRUE FALSE
 [2413] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE  TRUE FALSE  TRUE
 [2425] FALSE FALSE FALSE FALSE  TRUE FALSE FALSE  TRUE  TRUE FALSE FALSE  TRUE
 [2437]  TRUE FALSE FALSE  TRUE FALSE FALSE  TRUE FALSE  TRUE FALSE FALSE  TRUE
 [2449] FALSE FALSE FALSE FALSE FALSE  TRUE FALSE FALSE  TRUE FALSE FALSE FALSE
 [2461] FALSE FALSE FALSE  TRUE  TRUE FALSE FALSE FALSE FALSE FALSE  TRUE FALSE
 [2473] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
 [2485] FALSE  TRUE FALSE  TRUE  TRUE FALSE FALSE  TRUE FALSE  TRUE FALSE  TRUE
 [2497] FALSE  TRUE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE  TRUE FALSE FALSE
 [2509]  TRUE FALSE  TRUE  TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
 [2521] FALSE  TRUE FALSE  TRUE FALSE FALSE  TRUE FALSE FALSE FALSE FALSE FALSE
 [2533] FALSE FALSE  TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
 [2545] FALSE  TRUE FALSE  TRUE  TRUE FALSE FALSE FALSE FALSE  TRUE FALSE FALSE
 [2557] FALSE  TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
 [2569]  TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE FALSE FALSE FALSE
 [2581] FALSE  TRUE  TRUE FALSE  TRUE FALSE FALSE FALSE FALSE FALSE  TRUE  TRUE
 [2593]  TRUE FALSE FALSE  TRUE FALSE FALSE FALSE FALSE FALSE  TRUE FALSE FALSE
 [2605] FALSE  TRUE FALSE FALSE FALSE FALSE FALSE  TRUE  TRUE FALSE FALSE  TRUE
 [2617] FALSE FALSE  TRUE FALSE  TRUE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE
 [2629]  TRUE  TRUE FALSE FALSE FALSE FALSE  TRUE  TRUE  TRUE FALSE FALSE  TRUE
 [2641] FALSE FALSE FALSE  TRUE  TRUE  TRUE  TRUE FALSE FALSE FALSE  TRUE FALSE
 [2653] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE
 [2665]  TRUE FALSE  TRUE FALSE  TRUE FALSE FALSE  TRUE  TRUE FALSE FALSE FALSE
 [2677] FALSE  TRUE  TRUE FALSE FALSE FALSE FALSE  TRUE FALSE  TRUE FALSE FALSE
 [2689] FALSE FALSE  TRUE  TRUE  TRUE FALSE  TRUE FALSE FALSE FALSE FALSE FALSE
 [2701] FALSE FALSE FALSE FALSE FALSE FALSE  TRUE FALSE FALSE FALSE FALSE  TRUE
 [2713]  TRUE  TRUE  TRUE FALSE  TRUE FALSE  TRUE FALSE  TRUE FALSE FALSE FALSE
 [2725]  TRUE FALSE FALSE FALSE FALSE  TRUE  TRUE FALSE FALSE FALSE  TRUE  TRUE
 [2737] FALSE FALSE FALSE FALSE FALSE FALSE  TRUE FALSE  TRUE  TRUE FALSE FALSE
 [2749]  TRUE  TRUE FALSE FALSE FALSE FALSE FALSE  TRUE  TRUE FALSE  TRUE FALSE
 [2761] FALSE FALSE  TRUE FALSE FALSE  TRUE FALSE FALSE FALSE FALSE FALSE FALSE
 [2773] FALSE FALSE FALSE  TRUE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE  TRUE
 [2785]  TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE  TRUE
 [2797] FALSE  TRUE  TRUE FALSE  TRUE  TRUE FALSE FALSE FALSE FALSE FALSE FALSE
 [2809] FALSE  TRUE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE FALSE FALSE  TRUE
 [2821] FALSE FALSE FALSE  TRUE  TRUE FALSE  TRUE  TRUE  TRUE FALSE FALSE FALSE
 [2833]  TRUE FALSE FALSE  TRUE  TRUE FALSE FALSE  TRUE  TRUE FALSE FALSE  TRUE
 [2845] FALSE  TRUE FALSE FALSE FALSE  TRUE FALSE FALSE FALSE FALSE  TRUE FALSE
 [2857]  TRUE FALSE FALSE  TRUE FALSE  TRUE FALSE FALSE  TRUE FALSE FALSE  TRUE
 [2869] FALSE FALSE FALSE FALSE FALSE  TRUE FALSE FALSE FALSE FALSE  TRUE FALSE
 [2881] FALSE FALSE FALSE  TRUE FALSE FALSE  TRUE FALSE FALSE FALSE FALSE  TRUE
 [2893] FALSE  TRUE FALSE  TRUE FALSE  TRUE  TRUE FALSE FALSE  TRUE  TRUE FALSE
 [2905] FALSE FALSE FALSE FALSE  TRUE FALSE  TRUE  TRUE  TRUE  TRUE FALSE FALSE
 [2917] FALSE  TRUE FALSE  TRUE  TRUE FALSE  TRUE  TRUE  TRUE FALSE FALSE  TRUE
 [2929] FALSE FALSE FALSE  TRUE FALSE FALSE FALSE  TRUE FALSE  TRUE FALSE  TRUE
 [2941] FALSE FALSE FALSE FALSE FALSE  TRUE FALSE  TRUE FALSE FALSE FALSE FALSE
 [2953]  TRUE  TRUE FALSE  TRUE FALSE FALSE  TRUE FALSE  TRUE FALSE FALSE FALSE
 [2965] FALSE  TRUE  TRUE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE FALSE  TRUE
 [2977] FALSE FALSE FALSE  TRUE FALSE  TRUE FALSE  TRUE FALSE FALSE FALSE FALSE
 [2989] FALSE  TRUE  TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE
 [3001]  TRUE FALSE FALSE FALSE FALSE  TRUE FALSE  TRUE FALSE  TRUE FALSE  TRUE
 [3013] FALSE  TRUE  TRUE  TRUE FALSE FALSE  TRUE FALSE FALSE  TRUE FALSE  TRUE
 [3025]  TRUE FALSE FALSE FALSE FALSE  TRUE FALSE  TRUE FALSE FALSE FALSE FALSE
 [3037] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE
 [3049]  TRUE  TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE FALSE FALSE
 [3061]  TRUE FALSE  TRUE FALSE FALSE  TRUE FALSE  TRUE FALSE FALSE  TRUE FALSE
 [3073] FALSE FALSE FALSE FALSE  TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
 [3085]  TRUE  TRUE  TRUE FALSE FALSE FALSE  TRUE  TRUE FALSE FALSE FALSE FALSE
 [3097] FALSE FALSE FALSE FALSE FALSE FALSE  TRUE FALSE FALSE FALSE FALSE FALSE
 [3109] FALSE  TRUE FALSE  TRUE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE FALSE
 [3121] FALSE FALSE FALSE FALSE  TRUE  TRUE FALSE FALSE  TRUE FALSE FALSE FALSE
 [3133]  TRUE FALSE  TRUE FALSE  TRUE  TRUE FALSE FALSE FALSE FALSE FALSE  TRUE
 [3145]  TRUE FALSE FALSE FALSE FALSE  TRUE FALSE FALSE FALSE FALSE FALSE FALSE
 [3157]  TRUE FALSE FALSE FALSE  TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
 [3169] FALSE FALSE FALSE FALSE FALSE FALSE  TRUE FALSE  TRUE FALSE FALSE FALSE
 [3181] FALSE FALSE FALSE FALSE  TRUE  TRUE  TRUE FALSE FALSE FALSE FALSE  TRUE
 [3193] FALSE  TRUE FALSE FALSE FALSE FALSE FALSE  TRUE FALSE FALSE  TRUE FALSE
 [3205] FALSE  TRUE FALSE FALSE FALSE FALSE  TRUE FALSE FALSE  TRUE FALSE  TRUE
 [3217] FALSE FALSE FALSE  TRUE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE  TRUE
 [3229]  TRUE FALSE FALSE  TRUE FALSE  TRUE FALSE FALSE FALSE FALSE FALSE FALSE
 [3241] FALSE FALSE  TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
 [3253] FALSE FALSE FALSE FALSE FALSE  TRUE FALSE  TRUE FALSE  TRUE FALSE FALSE
 [3265] FALSE  TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE FALSE
 [3277] FALSE FALSE  TRUE  TRUE FALSE FALSE  TRUE  TRUE  TRUE FALSE FALSE FALSE
 [3289] FALSE FALSE FALSE FALSE FALSE FALSE  TRUE FALSE FALSE FALSE FALSE FALSE
 [3301] FALSE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE FALSE  TRUE FALSE  TRUE
 [3313] FALSE  TRUE FALSE FALSE FALSE FALSE  TRUE  TRUE FALSE FALSE  TRUE FALSE
 [3325] FALSE FALSE FALSE  TRUE FALSE  TRUE FALSE  TRUE FALSE FALSE FALSE FALSE
 [3337] FALSE FALSE  TRUE FALSE  TRUE FALSE FALSE  TRUE FALSE FALSE FALSE FALSE
 [3349] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
 [3361] FALSE FALSE FALSE FALSE  TRUE FALSE FALSE  TRUE FALSE  TRUE  TRUE FALSE
 [3373] FALSE FALSE  TRUE FALSE  TRUE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE
 [3385] FALSE FALSE FALSE  TRUE FALSE FALSE FALSE FALSE  TRUE FALSE FALSE  TRUE
 [3397] FALSE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE FALSE  TRUE FALSE FALSE
 [3409] FALSE  TRUE FALSE  TRUE  TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
 [3421] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
 [3433]  TRUE FALSE FALSE FALSE  TRUE  TRUE FALSE FALSE FALSE  TRUE FALSE FALSE
 [3445] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE  TRUE
 [3457]  TRUE FALSE FALSE  TRUE FALSE FALSE  TRUE  TRUE FALSE FALSE FALSE  TRUE
 [3469] FALSE FALSE  TRUE FALSE  TRUE FALSE FALSE FALSE FALSE FALSE  TRUE  TRUE
 [3481] FALSE FALSE  TRUE FALSE FALSE FALSE  TRUE  TRUE FALSE FALSE FALSE FALSE
 [3493] FALSE FALSE  TRUE FALSE FALSE  TRUE FALSE  TRUE FALSE FALSE FALSE  TRUE
 [3505] FALSE  TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE FALSE  TRUE
 [3517] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE  TRUE FALSE FALSE
 [3529] FALSE  TRUE  TRUE FALSE  TRUE FALSE FALSE  TRUE  TRUE FALSE  TRUE FALSE
 [3541]  TRUE  TRUE FALSE  TRUE FALSE FALSE FALSE FALSE  TRUE FALSE FALSE FALSE
 [3553] FALSE  TRUE FALSE FALSE FALSE  TRUE  TRUE  TRUE  TRUE FALSE FALSE FALSE
 [3565]  TRUE  TRUE FALSE FALSE FALSE  TRUE FALSE FALSE FALSE FALSE FALSE  TRUE
 [3577]  TRUE FALSE FALSE FALSE FALSE  TRUE FALSE  TRUE FALSE  TRUE FALSE FALSE
 [3589]  TRUE FALSE  TRUE FALSE FALSE FALSE FALSE  TRUE FALSE FALSE  TRUE FALSE
 [3601] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE FALSE FALSE  TRUE
 [3613]  TRUE FALSE  TRUE FALSE FALSE FALSE  TRUE FALSE  TRUE FALSE FALSE FALSE
 [3625] FALSE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE FALSE FALSE  TRUE FALSE
 [3637] FALSE FALSE FALSE FALSE  TRUE FALSE  TRUE  TRUE  TRUE FALSE  TRUE FALSE
 [3649] FALSE FALSE FALSE FALSE FALSE  TRUE FALSE FALSE  TRUE FALSE  TRUE FALSE
 [3661] FALSE FALSE  TRUE FALSE  TRUE FALSE  TRUE FALSE FALSE  TRUE  TRUE FALSE
 [3673] FALSE FALSE  TRUE FALSE FALSE FALSE FALSE  TRUE FALSE FALSE FALSE FALSE
 [3685] FALSE FALSE FALSE  TRUE FALSE  TRUE  TRUE FALSE FALSE FALSE FALSE FALSE
 [3697] FALSE FALSE FALSE FALSE FALSE FALSE  TRUE FALSE FALSE FALSE FALSE  TRUE
 [3709]  TRUE  TRUE FALSE FALSE FALSE FALSE FALSE  TRUE  TRUE FALSE FALSE  TRUE
 [3721]  TRUE FALSE FALSE FALSE FALSE  TRUE  TRUE FALSE FALSE FALSE FALSE FALSE
 [3733] FALSE FALSE  TRUE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE  TRUE FALSE
 [3745] FALSE FALSE  TRUE FALSE FALSE FALSE FALSE  TRUE  TRUE FALSE  TRUE  TRUE
 [3757]  TRUE FALSE  TRUE  TRUE  TRUE FALSE  TRUE FALSE FALSE  TRUE  TRUE FALSE
 [3769] FALSE FALSE  TRUE FALSE FALSE  TRUE FALSE FALSE FALSE FALSE FALSE  TRUE
 [3781] FALSE FALSE FALSE FALSE FALSE FALSE  TRUE FALSE FALSE FALSE  TRUE  TRUE
 [3793] FALSE FALSE FALSE FALSE  TRUE  TRUE  TRUE FALSE FALSE FALSE FALSE  TRUE
 [3805] FALSE  TRUE FALSE  TRUE FALSE FALSE FALSE FALSE FALSE  TRUE FALSE FALSE
 [3817] FALSE  TRUE FALSE FALSE FALSE  TRUE FALSE FALSE FALSE FALSE  TRUE FALSE
 [3829]  TRUE  TRUE FALSE  TRUE FALSE FALSE FALSE FALSE  TRUE FALSE FALSE  TRUE
 [3841]  TRUE FALSE  TRUE FALSE  TRUE  TRUE FALSE  TRUE FALSE FALSE  TRUE  TRUE
 [3853] FALSE FALSE  TRUE FALSE FALSE FALSE  TRUE  TRUE FALSE  TRUE  TRUE FALSE
 [3865] FALSE FALSE FALSE  TRUE FALSE  TRUE  TRUE  TRUE  TRUE FALSE  TRUE FALSE
 [3877]  TRUE  TRUE  TRUE FALSE FALSE FALSE FALSE  TRUE FALSE FALSE FALSE FALSE
 [3889] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
 [3901] FALSE  TRUE FALSE  TRUE FALSE FALSE  TRUE FALSE FALSE  TRUE FALSE  TRUE
 [3913] FALSE  TRUE FALSE FALSE  TRUE  TRUE FALSE FALSE FALSE  TRUE FALSE  TRUE
 [3925] FALSE  TRUE FALSE FALSE FALSE FALSE  TRUE FALSE FALSE FALSE FALSE  TRUE
 [3937] FALSE  TRUE FALSE FALSE  TRUE FALSE  TRUE FALSE FALSE  TRUE FALSE  TRUE
 [3949]  TRUE FALSE FALSE FALSE  TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
 [3961]  TRUE  TRUE  TRUE FALSE  TRUE FALSE FALSE FALSE FALSE  TRUE FALSE FALSE
 [3973] FALSE FALSE FALSE  TRUE  TRUE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE
 [3985] FALSE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE  TRUE  TRUE FALSE FALSE
 [3997] FALSE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE FALSE FALSE FALSE FALSE
 [4009] FALSE FALSE FALSE FALSE FALSE  TRUE FALSE FALSE FALSE FALSE FALSE  TRUE
 [4021] FALSE  TRUE FALSE  TRUE  TRUE FALSE FALSE FALSE FALSE FALSE  TRUE  TRUE
 [4033] FALSE  TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE FALSE  TRUE
 [4045] FALSE  TRUE FALSE  TRUE FALSE FALSE  TRUE FALSE  TRUE FALSE FALSE FALSE
 [4057] FALSE  TRUE  TRUE FALSE FALSE FALSE  TRUE FALSE  TRUE FALSE  TRUE  TRUE
 [4069]  TRUE FALSE  TRUE FALSE FALSE  TRUE FALSE FALSE FALSE  TRUE FALSE  TRUE
 [4081] FALSE FALSE FALSE FALSE FALSE  TRUE FALSE FALSE FALSE FALSE FALSE FALSE
 [4093]  TRUE FALSE  TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
 [4105] FALSE FALSE  TRUE  TRUE FALSE  TRUE FALSE FALSE FALSE FALSE  TRUE FALSE
 [4117] FALSE FALSE FALSE  TRUE FALSE  TRUE FALSE FALSE  TRUE FALSE FALSE  TRUE
 [4129]  TRUE FALSE FALSE FALSE FALSE FALSE  TRUE FALSE  TRUE FALSE  TRUE  TRUE
 [4141] FALSE  TRUE  TRUE  TRUE FALSE FALSE FALSE FALSE  TRUE FALSE FALSE FALSE
 [4153]  TRUE FALSE FALSE  TRUE  TRUE FALSE  TRUE FALSE  TRUE  TRUE FALSE FALSE
 [4165] FALSE  TRUE  TRUE FALSE  TRUE  TRUE FALSE FALSE FALSE FALSE  TRUE FALSE
 [4177] FALSE  TRUE  TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE  TRUE
 [4189] FALSE  TRUE FALSE  TRUE  TRUE FALSE FALSE FALSE FALSE FALSE  TRUE FALSE
 [4201] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE
 [4213] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE  TRUE
 [4225] FALSE  TRUE FALSE FALSE FALSE FALSE  TRUE FALSE FALSE FALSE FALSE FALSE
 [4237] FALSE FALSE FALSE  TRUE FALSE  TRUE FALSE FALSE  TRUE FALSE FALSE FALSE
 [4249] FALSE FALSE FALSE FALSE  TRUE FALSE FALSE  TRUE FALSE FALSE FALSE FALSE
 [4261] FALSE FALSE FALSE FALSE  TRUE FALSE FALSE FALSE FALSE FALSE  TRUE  TRUE
 [4273]  TRUE  TRUE  TRUE FALSE FALSE FALSE FALSE FALSE  TRUE FALSE FALSE FALSE
 [4285]  TRUE FALSE  TRUE FALSE  TRUE  TRUE FALSE FALSE  TRUE FALSE FALSE FALSE
 [4297] FALSE FALSE FALSE  TRUE FALSE FALSE FALSE  TRUE FALSE FALSE FALSE FALSE
 [4309] FALSE  TRUE FALSE FALSE  TRUE FALSE  TRUE FALSE FALSE FALSE FALSE FALSE
 [4321] FALSE  TRUE  TRUE FALSE  TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
 [4333] FALSE  TRUE  TRUE FALSE FALSE FALSE  TRUE FALSE FALSE FALSE  TRUE FALSE
 [4345] FALSE FALSE  TRUE FALSE  TRUE FALSE FALSE FALSE  TRUE FALSE FALSE  TRUE
 [4357] FALSE  TRUE FALSE FALSE FALSE FALSE FALSE  TRUE  TRUE FALSE FALSE  TRUE
 [4369]  TRUE FALSE FALSE FALSE FALSE FALSE  TRUE FALSE FALSE FALSE  TRUE FALSE
 [4381] FALSE  TRUE FALSE  TRUE FALSE  TRUE  TRUE  TRUE FALSE FALSE FALSE  TRUE
 [4393] FALSE FALSE  TRUE FALSE FALSE FALSE FALSE FALSE  TRUE  TRUE FALSE FALSE
 [4405] FALSE  TRUE  TRUE FALSE  TRUE FALSE  TRUE FALSE FALSE FALSE  TRUE  TRUE
 [4417] FALSE FALSE  TRUE FALSE FALSE FALSE FALSE FALSE  TRUE FALSE FALSE FALSE
 [4429] FALSE FALSE FALSE FALSE  TRUE  TRUE FALSE FALSE FALSE FALSE FALSE FALSE
 [4441] FALSE  TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE  TRUE
 [4453] FALSE FALSE  TRUE FALSE FALSE FALSE FALSE FALSE  TRUE FALSE  TRUE FALSE
 [4465] FALSE  TRUE  TRUE FALSE  TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
 [4477] FALSE  TRUE FALSE FALSE FALSE FALSE FALSE  TRUE FALSE FALSE FALSE FALSE
 [4489] FALSE  TRUE  TRUE FALSE FALSE  TRUE  TRUE FALSE FALSE FALSE FALSE  TRUE
 [4501] FALSE  TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE  TRUE  TRUE
 [4513] FALSE  TRUE FALSE  TRUE  TRUE FALSE  TRUE FALSE FALSE FALSE FALSE FALSE
 [4525] FALSE  TRUE FALSE  TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
 [4537]  TRUE FALSE FALSE FALSE FALSE  TRUE  TRUE FALSE  TRUE FALSE  TRUE FALSE
 [4549] FALSE FALSE FALSE  TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE
 [4561]  TRUE  TRUE FALSE  TRUE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE  TRUE
 [4573] FALSE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE FALSE FALSE  TRUE  TRUE
 [4585] FALSE FALSE FALSE  TRUE FALSE  TRUE FALSE  TRUE FALSE  TRUE  TRUE  TRUE
 [4597] FALSE FALSE  TRUE  TRUE FALSE  TRUE FALSE FALSE FALSE FALSE  TRUE FALSE
 [4609] FALSE FALSE  TRUE  TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
 [4621] FALSE FALSE FALSE  TRUE FALSE FALSE FALSE  TRUE  TRUE  TRUE FALSE  TRUE
 [4633] FALSE FALSE  TRUE FALSE FALSE  TRUE FALSE  TRUE FALSE FALSE  TRUE FALSE
 [4645] FALSE FALSE FALSE  TRUE  TRUE  TRUE FALSE  TRUE FALSE FALSE FALSE FALSE
 [4657] FALSE FALSE  TRUE  TRUE  TRUE  TRUE  TRUE FALSE FALSE  TRUE FALSE FALSE
 [4669]  TRUE FALSE  TRUE FALSE FALSE FALSE  TRUE FALSE FALSE FALSE  TRUE FALSE
 [4681]  TRUE FALSE FALSE FALSE  TRUE FALSE  TRUE FALSE FALSE FALSE FALSE FALSE
 [4693] FALSE  TRUE FALSE  TRUE FALSE FALSE  TRUE FALSE FALSE  TRUE FALSE FALSE
 [4705] FALSE FALSE FALSE  TRUE  TRUE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE
 [4717] FALSE FALSE FALSE  TRUE  TRUE FALSE FALSE  TRUE FALSE FALSE FALSE FALSE
 [4729]  TRUE FALSE FALSE FALSE  TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
 [4741]  TRUE FALSE FALSE FALSE FALSE  TRUE FALSE FALSE FALSE FALSE  TRUE FALSE
 [4753]  TRUE FALSE FALSE FALSE  TRUE FALSE FALSE FALSE  TRUE  TRUE FALSE FALSE
 [4765] FALSE FALSE FALSE FALSE  TRUE FALSE  TRUE  TRUE  TRUE FALSE  TRUE FALSE
 [4777] FALSE FALSE  TRUE FALSE FALSE FALSE FALSE FALSE  TRUE  TRUE FALSE  TRUE
 [4789]  TRUE  TRUE FALSE FALSE FALSE FALSE  TRUE FALSE FALSE  TRUE FALSE  TRUE
 [4801] FALSE FALSE  TRUE  TRUE FALSE  TRUE  TRUE  TRUE  TRUE FALSE FALSE FALSE
 [4813] FALSE FALSE  TRUE FALSE  TRUE FALSE FALSE  TRUE FALSE FALSE  TRUE FALSE
 [4825] FALSE FALSE  TRUE  TRUE  TRUE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE
 [4837] FALSE FALSE  TRUE  TRUE  TRUE FALSE FALSE  TRUE FALSE FALSE FALSE FALSE
 [4849] FALSE FALSE FALSE FALSE  TRUE FALSE FALSE FALSE FALSE  TRUE FALSE  TRUE
 [4861] FALSE FALSE FALSE FALSE FALSE  TRUE FALSE  TRUE  TRUE  TRUE FALSE FALSE
 [4873] FALSE FALSE FALSE FALSE  TRUE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE
 [4885] FALSE FALSE  TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
 [4897]  TRUE  TRUE  TRUE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE FALSE  TRUE
 [4909] FALSE FALSE FALSE FALSE  TRUE  TRUE FALSE FALSE FALSE FALSE FALSE  TRUE
 [4921]  TRUE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE FALSE FALSE FALSE FALSE
 [4933] FALSE FALSE  TRUE  TRUE FALSE  TRUE FALSE FALSE FALSE  TRUE FALSE FALSE
 [4945] FALSE FALSE  TRUE FALSE FALSE  TRUE FALSE FALSE FALSE FALSE FALSE FALSE
 [4957] FALSE FALSE FALSE FALSE FALSE  TRUE FALSE FALSE FALSE FALSE  TRUE FALSE
 [4969] FALSE FALSE FALSE  TRUE FALSE FALSE FALSE FALSE FALSE  TRUE FALSE  TRUE
 [4981] FALSE FALSE FALSE FALSE  TRUE FALSE  TRUE FALSE FALSE FALSE FALSE FALSE
 [4993]  TRUE FALSE FALSE FALSE FALSE  TRUE FALSE FALSE FALSE FALSE FALSE  TRUE
 [5005] FALSE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE  TRUE  TRUE FALSE  TRUE
 [5017]  TRUE  TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE  TRUE  TRUE
 [5029] FALSE FALSE FALSE FALSE  TRUE  TRUE FALSE FALSE FALSE FALSE FALSE FALSE
 [5041]  TRUE FALSE FALSE  TRUE FALSE  TRUE FALSE FALSE FALSE FALSE FALSE FALSE
 [5053] FALSE FALSE FALSE FALSE  TRUE FALSE  TRUE FALSE  TRUE FALSE  TRUE FALSE
 [5065] FALSE  TRUE FALSE  TRUE FALSE  TRUE FALSE FALSE  TRUE FALSE FALSE FALSE
 [5077] FALSE  TRUE FALSE FALSE FALSE FALSE  TRUE  TRUE  TRUE FALSE FALSE  TRUE
 [5089]  TRUE FALSE  TRUE FALSE FALSE FALSE  TRUE FALSE  TRUE  TRUE FALSE FALSE
 [5101]  TRUE FALSE  TRUE  TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE
 [5113] FALSE FALSE FALSE FALSE FALSE  TRUE  TRUE  TRUE FALSE  TRUE  TRUE  TRUE
 [5125] FALSE FALSE  TRUE  TRUE  TRUE FALSE FALSE  TRUE FALSE FALSE FALSE FALSE
 [5137] FALSE  TRUE FALSE FALSE FALSE  TRUE FALSE FALSE FALSE FALSE  TRUE  TRUE
 [5149]  TRUE  TRUE FALSE  TRUE FALSE FALSE  TRUE  TRUE  TRUE FALSE FALSE  TRUE
 [5161] FALSE FALSE FALSE FALSE  TRUE FALSE FALSE  TRUE FALSE FALSE FALSE FALSE
 [5173]  TRUE FALSE FALSE  TRUE FALSE  TRUE FALSE  TRUE FALSE  TRUE FALSE  TRUE
 [5185] FALSE FALSE  TRUE FALSE FALSE FALSE FALSE  TRUE FALSE FALSE FALSE FALSE
 [5197] FALSE FALSE  TRUE FALSE  TRUE  TRUE  TRUE FALSE  TRUE  TRUE FALSE FALSE
 [5209] FALSE  TRUE  TRUE FALSE  TRUE  TRUE  TRUE FALSE FALSE FALSE  TRUE  TRUE
 [5221]  TRUE FALSE  TRUE FALSE FALSE  TRUE  TRUE FALSE  TRUE  TRUE  TRUE  TRUE
 [5233] FALSE FALSE FALSE FALSE FALSE  TRUE  TRUE FALSE  TRUE FALSE FALSE FALSE
 [5245] FALSE FALSE FALSE  TRUE  TRUE FALSE  TRUE FALSE FALSE  TRUE FALSE FALSE
 [5257]  TRUE  TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE FALSE
 [5269] FALSE  TRUE FALSE FALSE  TRUE FALSE FALSE FALSE  TRUE FALSE FALSE FALSE
 [5281] FALSE  TRUE FALSE FALSE FALSE FALSE  TRUE  TRUE  TRUE  TRUE FALSE FALSE
 [5293]  TRUE FALSE  TRUE FALSE FALSE FALSE  TRUE FALSE FALSE FALSE FALSE FALSE
 [5305] FALSE FALSE FALSE FALSE  TRUE FALSE FALSE FALSE  TRUE  TRUE FALSE FALSE
 [5317] FALSE FALSE FALSE  TRUE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE  TRUE
 [5329]  TRUE FALSE FALSE FALSE  TRUE  TRUE FALSE FALSE  TRUE  TRUE FALSE  TRUE
 [5341]  TRUE  TRUE  TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
 [5353] FALSE FALSE FALSE FALSE  TRUE FALSE FALSE FALSE FALSE FALSE  TRUE  TRUE
 [5365]  TRUE FALSE  TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE
 [5377] FALSE FALSE  TRUE  TRUE FALSE  TRUE  TRUE FALSE FALSE FALSE  TRUE  TRUE
 [5389] FALSE FALSE FALSE FALSE  TRUE FALSE  TRUE FALSE FALSE  TRUE FALSE FALSE
 [5401] FALSE FALSE  TRUE  TRUE FALSE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE FALSE
 [5413] FALSE FALSE FALSE  TRUE FALSE FALSE FALSE FALSE  TRUE  TRUE  TRUE FALSE
 [5425] FALSE  TRUE FALSE FALSE  TRUE FALSE  TRUE  TRUE  TRUE FALSE FALSE FALSE
 [5437] FALSE FALSE FALSE FALSE  TRUE  TRUE FALSE FALSE FALSE FALSE  TRUE  TRUE
 [5449] FALSE  TRUE FALSE  TRUE  TRUE  TRUE FALSE FALSE FALSE FALSE FALSE FALSE
 [5461]  TRUE  TRUE FALSE  TRUE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE FALSE
 [5473] FALSE  TRUE  TRUE  TRUE  TRUE FALSE FALSE FALSE FALSE FALSE  TRUE FALSE
 [5485]  TRUE FALSE FALSE FALSE  TRUE FALSE FALSE  TRUE  TRUE FALSE FALSE  TRUE
 [5497]  TRUE FALSE  TRUE FALSE  TRUE  TRUE FALSE  TRUE  TRUE  TRUE FALSE FALSE
 [5509]  TRUE FALSE FALSE FALSE  TRUE FALSE  TRUE FALSE FALSE FALSE FALSE FALSE
 [5521] FALSE FALSE FALSE  TRUE FALSE FALSE FALSE FALSE  TRUE  TRUE FALSE  TRUE
 [5533] FALSE FALSE FALSE  TRUE  TRUE  TRUE  TRUE FALSE  TRUE FALSE FALSE  TRUE
 [5545] FALSE  TRUE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE  TRUE  TRUE  TRUE
 [5557]  TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE FALSE
 [5569] FALSE FALSE  TRUE FALSE  TRUE FALSE FALSE FALSE FALSE  TRUE FALSE  TRUE
 [5581] FALSE FALSE  TRUE FALSE FALSE  TRUE FALSE FALSE FALSE FALSE FALSE  TRUE
 [5593] FALSE FALSE FALSE  TRUE FALSE  TRUE FALSE  TRUE FALSE  TRUE FALSE  TRUE
 [5605] FALSE FALSE FALSE FALSE FALSE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE FALSE
 [5617] FALSE FALSE  TRUE  TRUE FALSE FALSE FALSE FALSE FALSE  TRUE FALSE FALSE
 [5629] FALSE  TRUE FALSE FALSE FALSE  TRUE  TRUE  TRUE  TRUE  TRUE FALSE FALSE
 [5641] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
 [5653] FALSE FALSE FALSE FALSE  TRUE  TRUE  TRUE  TRUE  TRUE FALSE FALSE FALSE
 [5665] FALSE  TRUE FALSE  TRUE  TRUE FALSE FALSE  TRUE  TRUE FALSE  TRUE FALSE
 [5677] FALSE FALSE FALSE FALSE FALSE  TRUE FALSE FALSE  TRUE  TRUE  TRUE  TRUE
 [5689] FALSE FALSE FALSE  TRUE FALSE FALSE FALSE  TRUE FALSE FALSE FALSE  TRUE
 [5701]  TRUE  TRUE  TRUE FALSE  TRUE  TRUE  TRUE FALSE FALSE  TRUE FALSE FALSE
 [5713] FALSE FALSE FALSE FALSE  TRUE FALSE FALSE  TRUE  TRUE FALSE FALSE FALSE
 [5725] FALSE  TRUE FALSE  TRUE  TRUE FALSE FALSE FALSE  TRUE FALSE FALSE  TRUE
 [5737] FALSE FALSE  TRUE  TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE
 [5749] FALSE FALSE  TRUE  TRUE  TRUE FALSE FALSE  TRUE FALSE FALSE  TRUE FALSE
 [5761]  TRUE FALSE FALSE FALSE  TRUE FALSE  TRUE FALSE FALSE  TRUE FALSE FALSE
 [5773] FALSE FALSE FALSE FALSE  TRUE FALSE FALSE FALSE FALSE FALSE  TRUE FALSE
 [5785]  TRUE FALSE FALSE  TRUE  TRUE FALSE FALSE FALSE  TRUE FALSE FALSE FALSE
 [5797]  TRUE FALSE  TRUE  TRUE FALSE FALSE FALSE  TRUE FALSE  TRUE FALSE FALSE
 [5809]  TRUE FALSE FALSE FALSE FALSE FALSE  TRUE FALSE FALSE FALSE  TRUE  TRUE
 [5821]  TRUE FALSE FALSE FALSE FALSE  TRUE  TRUE FALSE  TRUE FALSE  TRUE FALSE
 [5833] FALSE FALSE  TRUE  TRUE FALSE FALSE  TRUE  TRUE FALSE FALSE FALSE FALSE
 [5845] FALSE  TRUE FALSE  TRUE  TRUE  TRUE FALSE FALSE  TRUE FALSE FALSE FALSE
 [5857]  TRUE  TRUE FALSE FALSE FALSE FALSE FALSE  TRUE  TRUE  TRUE  TRUE  TRUE
 [5869] FALSE FALSE FALSE FALSE  TRUE FALSE  TRUE FALSE FALSE FALSE FALSE FALSE
 [5881]  TRUE  TRUE  TRUE FALSE  TRUE FALSE  TRUE FALSE  TRUE  TRUE  TRUE  TRUE
 [5893] FALSE  TRUE FALSE  TRUE  TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
 [5905] FALSE  TRUE  TRUE FALSE FALSE  TRUE FALSE FALSE FALSE  TRUE  TRUE FALSE
 [5917]  TRUE  TRUE FALSE FALSE  TRUE  TRUE FALSE FALSE FALSE  TRUE  TRUE FALSE
 [5929]  TRUE FALSE FALSE FALSE  TRUE FALSE  TRUE FALSE FALSE  TRUE FALSE FALSE
 [5941] FALSE  TRUE FALSE FALSE FALSE  TRUE FALSE  TRUE FALSE FALSE  TRUE FALSE
 [5953] FALSE  TRUE  TRUE  TRUE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE  TRUE
 [5965]  TRUE  TRUE FALSE FALSE FALSE  TRUE FALSE  TRUE FALSE FALSE FALSE FALSE
 [5977] FALSE  TRUE  TRUE  TRUE FALSE FALSE FALSE FALSE  TRUE FALSE FALSE FALSE
 [5989] FALSE FALSE  TRUE FALSE FALSE FALSE  TRUE FALSE  TRUE FALSE FALSE  TRUE
 [6001] FALSE FALSE FALSE FALSE  TRUE  TRUE FALSE  TRUE FALSE FALSE  TRUE FALSE
 [6013]  TRUE FALSE FALSE FALSE  TRUE  TRUE FALSE FALSE FALSE FALSE FALSE  TRUE
 [6025]  TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE FALSE FALSE FALSE
 [6037] FALSE FALSE  TRUE  TRUE  TRUE FALSE FALSE  TRUE FALSE FALSE FALSE FALSE
 [6049] FALSE  TRUE FALSE  TRUE FALSE FALSE FALSE  TRUE  TRUE  TRUE FALSE FALSE
 [6061] FALSE FALSE FALSE FALSE FALSE FALSE  TRUE FALSE FALSE FALSE FALSE FALSE
 [6073] FALSE FALSE FALSE  TRUE FALSE FALSE FALSE  TRUE FALSE  TRUE  TRUE  TRUE
 [6085]  TRUE FALSE  TRUE  TRUE  TRUE  TRUE FALSE FALSE FALSE FALSE FALSE  TRUE
 [6097] FALSE  TRUE FALSE FALSE FALSE FALSE  TRUE FALSE FALSE  TRUE FALSE FALSE
 [6109] FALSE FALSE  TRUE FALSE FALSE  TRUE  TRUE FALSE  TRUE FALSE FALSE  TRUE
 [6121] FALSE FALSE FALSE FALSE FALSE FALSE  TRUE FALSE FALSE FALSE  TRUE FALSE
 [6133] FALSE  TRUE  TRUE  TRUE FALSE  TRUE FALSE  TRUE FALSE FALSE FALSE FALSE
 [6145]  TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE FALSE FALSE
 [6157] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE FALSE FALSE  TRUE
 [6169] FALSE  TRUE FALSE FALSE FALSE  TRUE  TRUE FALSE FALSE FALSE FALSE  TRUE
 [6181]  TRUE FALSE  TRUE FALSE  TRUE  TRUE FALSE FALSE FALSE FALSE  TRUE  TRUE
 [6193]  TRUE FALSE FALSE FALSE  TRUE FALSE  TRUE FALSE FALSE FALSE FALSE FALSE
 [6205] FALSE  TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
 [6217] FALSE  TRUE  TRUE  TRUE FALSE  TRUE FALSE FALSE  TRUE FALSE FALSE  TRUE
 [6229] FALSE FALSE  TRUE FALSE FALSE FALSE FALSE  TRUE  TRUE  TRUE FALSE  TRUE
 [6241]  TRUE  TRUE  TRUE  TRUE FALSE FALSE  TRUE FALSE FALSE  TRUE FALSE FALSE
 [6253] FALSE FALSE FALSE  TRUE  TRUE FALSE FALSE FALSE  TRUE  TRUE  TRUE FALSE
 [6265] FALSE  TRUE FALSE FALSE FALSE FALSE FALSE  TRUE FALSE  TRUE FALSE FALSE
 [6277]  TRUE  TRUE FALSE FALSE  TRUE FALSE FALSE FALSE  TRUE  TRUE FALSE  TRUE
 [6289] FALSE FALSE  TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
 [6301]  TRUE FALSE  TRUE  TRUE  TRUE FALSE  TRUE FALSE FALSE  TRUE FALSE  TRUE
 [6313] FALSE FALSE FALSE FALSE  TRUE FALSE  TRUE  TRUE  TRUE  TRUE  TRUE FALSE
 [6325] FALSE FALSE  TRUE  TRUE  TRUE  TRUE FALSE FALSE FALSE FALSE FALSE FALSE
 [6337] FALSE FALSE FALSE FALSE  TRUE FALSE  TRUE FALSE FALSE  TRUE FALSE FALSE
 [6349] FALSE  TRUE FALSE FALSE FALSE FALSE  TRUE  TRUE FALSE FALSE  TRUE  TRUE
 [6361] FALSE  TRUE FALSE  TRUE FALSE  TRUE  TRUE FALSE FALSE FALSE  TRUE  TRUE
 [6373] FALSE FALSE FALSE  TRUE FALSE FALSE  TRUE FALSE FALSE  TRUE FALSE FALSE
 [6385]  TRUE FALSE FALSE  TRUE FALSE  TRUE FALSE FALSE FALSE FALSE FALSE  TRUE
 [6397]  TRUE  TRUE  TRUE  TRUE FALSE FALSE  TRUE  TRUE FALSE FALSE  TRUE FALSE
 [6409]  TRUE FALSE FALSE FALSE FALSE FALSE  TRUE FALSE  TRUE  TRUE  TRUE  TRUE
 [6421] FALSE FALSE FALSE FALSE FALSE  TRUE  TRUE  TRUE  TRUE FALSE FALSE FALSE
 [6433]  TRUE  TRUE  TRUE FALSE FALSE  TRUE FALSE  TRUE FALSE FALSE FALSE  TRUE
 [6445]  TRUE FALSE FALSE  TRUE FALSE FALSE  TRUE  TRUE FALSE FALSE FALSE  TRUE
 [6457] FALSE  TRUE  TRUE FALSE  TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
 [6469] FALSE FALSE FALSE FALSE FALSE  TRUE  TRUE  TRUE FALSE FALSE FALSE FALSE
 [6481] FALSE  TRUE FALSE FALSE  TRUE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE
 [6493] FALSE FALSE FALSE  TRUE FALSE FALSE  TRUE FALSE FALSE FALSE  TRUE  TRUE
 [6505] FALSE  TRUE  TRUE  TRUE FALSE FALSE  TRUE  TRUE  TRUE FALSE FALSE FALSE
 [6517] FALSE FALSE FALSE FALSE FALSE  TRUE FALSE FALSE FALSE FALSE FALSE  TRUE
 [6529]  TRUE  TRUE  TRUE FALSE FALSE FALSE  TRUE FALSE FALSE FALSE FALSE  TRUE
 [6541] FALSE FALSE  TRUE FALSE FALSE  TRUE  TRUE FALSE FALSE FALSE  TRUE FALSE
 [6553]  TRUE  TRUE FALSE  TRUE FALSE  TRUE  TRUE  TRUE FALSE FALSE FALSE FALSE
 [6565]  TRUE FALSE  TRUE FALSE FALSE  TRUE FALSE  TRUE FALSE FALSE  TRUE FALSE
 [6577] FALSE FALSE FALSE FALSE  TRUE FALSE FALSE FALSE  TRUE FALSE FALSE FALSE
 [6589]  TRUE FALSE FALSE FALSE FALSE FALSE  TRUE FALSE FALSE FALSE FALSE  TRUE
 [6601] FALSE FALSE  TRUE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE FALSE FALSE
 [6613]  TRUE FALSE FALSE FALSE FALSE  TRUE FALSE  TRUE  TRUE FALSE  TRUE  TRUE
 [6625] FALSE FALSE  TRUE FALSE FALSE FALSE  TRUE FALSE  TRUE  TRUE  TRUE FALSE
 [6637] FALSE  TRUE  TRUE FALSE  TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
 [6649] FALSE  TRUE  TRUE  TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
 [6661] FALSE FALSE  TRUE  TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
 [6673]  TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE  TRUE  TRUE
 [6685] FALSE FALSE FALSE  TRUE  TRUE  TRUE  TRUE FALSE FALSE FALSE FALSE FALSE
 [6697]  TRUE  TRUE  TRUE FALSE FALSE  TRUE FALSE FALSE FALSE FALSE FALSE FALSE
 [6709] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE  TRUE FALSE
 [6721]  TRUE FALSE  TRUE  TRUE  TRUE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE
 [6733]  TRUE FALSE  TRUE FALSE  TRUE FALSE FALSE  TRUE  TRUE  TRUE FALSE  TRUE
 [6745] FALSE FALSE  TRUE FALSE FALSE FALSE  TRUE FALSE FALSE FALSE  TRUE FALSE
 [6757] FALSE FALSE FALSE FALSE  TRUE  TRUE  TRUE  TRUE FALSE FALSE  TRUE FALSE
 [6769]  TRUE FALSE  TRUE FALSE FALSE FALSE FALSE FALSE  TRUE  TRUE FALSE  TRUE
 [6781]  TRUE  TRUE FALSE  TRUE  TRUE FALSE FALSE FALSE  TRUE FALSE FALSE  TRUE
 [6793]  TRUE  TRUE FALSE FALSE FALSE FALSE FALSE  TRUE FALSE  TRUE FALSE FALSE
 [6805]  TRUE  TRUE  TRUE  TRUE FALSE  TRUE FALSE  TRUE  TRUE FALSE  TRUE  TRUE
 [6817]  TRUE  TRUE FALSE FALSE FALSE  TRUE FALSE  TRUE  TRUE FALSE FALSE  TRUE
 [6829] FALSE FALSE FALSE FALSE FALSE  TRUE FALSE FALSE FALSE  TRUE  TRUE FALSE
 [6841] FALSE FALSE  TRUE FALSE  TRUE  TRUE FALSE  TRUE FALSE  TRUE FALSE FALSE
 [6853]  TRUE FALSE  TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE FALSE
 [6865]  TRUE FALSE FALSE FALSE FALSE  TRUE  TRUE FALSE  TRUE  TRUE FALSE FALSE
 [6877]  TRUE  TRUE  TRUE FALSE FALSE  TRUE  TRUE FALSE FALSE FALSE FALSE FALSE
 [6889] FALSE  TRUE FALSE  TRUE FALSE FALSE  TRUE FALSE  TRUE FALSE  TRUE FALSE
 [6901] FALSE FALSE FALSE FALSE  TRUE  TRUE  TRUE FALSE  TRUE FALSE FALSE  TRUE
 [6913]  TRUE  TRUE FALSE  TRUE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE  TRUE
 [6925] FALSE  TRUE  TRUE FALSE  TRUE FALSE  TRUE FALSE FALSE FALSE FALSE FALSE
 [6937] FALSE  TRUE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE FALSE  TRUE FALSE
 [6949] FALSE FALSE  TRUE  TRUE  TRUE  TRUE FALSE FALSE  TRUE FALSE FALSE FALSE
 [6961] FALSE FALSE FALSE FALSE  TRUE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE
 [6973]  TRUE  TRUE FALSE FALSE  TRUE  TRUE FALSE  TRUE  TRUE  TRUE FALSE FALSE
 [6985] FALSE FALSE FALSE FALSE  TRUE  TRUE  TRUE FALSE  TRUE  TRUE FALSE FALSE
 [6997] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
 [7009] FALSE FALSE FALSE FALSE  TRUE FALSE FALSE FALSE FALSE  TRUE  TRUE  TRUE
 [7021]  TRUE  TRUE FALSE FALSE FALSE  TRUE FALSE  TRUE FALSE FALSE  TRUE  TRUE
 [7033]  TRUE FALSE FALSE FALSE  TRUE  TRUE FALSE FALSE FALSE FALSE FALSE FALSE
 [7045] FALSE  TRUE  TRUE  TRUE FALSE FALSE  TRUE FALSE FALSE FALSE FALSE FALSE
 [7057] FALSE FALSE FALSE FALSE FALSE FALSE  TRUE  TRUE FALSE FALSE  TRUE  TRUE
 [7069] FALSE FALSE FALSE FALSE FALSE FALSE  TRUE FALSE  TRUE FALSE  TRUE FALSE
 [7081]  TRUE  TRUE FALSE  TRUE FALSE FALSE FALSE FALSE  TRUE  TRUE  TRUE FALSE
 [7093] FALSE FALSE FALSE FALSE  TRUE FALSE  TRUE FALSE  TRUE FALSE  TRUE FALSE
 [7105] FALSE FALSE FALSE FALSE  TRUE  TRUE FALSE  TRUE FALSE FALSE FALSE  TRUE
 [7117] FALSE  TRUE FALSE FALSE  TRUE FALSE  TRUE FALSE  TRUE  TRUE FALSE FALSE
 [7129] FALSE  TRUE  TRUE FALSE FALSE FALSE  TRUE  TRUE  TRUE FALSE FALSE  TRUE
 [7141] FALSE  TRUE FALSE FALSE FALSE  TRUE  TRUE FALSE FALSE FALSE FALSE  TRUE
 [7153] FALSE FALSE  TRUE FALSE  TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
 [7165] FALSE FALSE FALSE FALSE FALSE  TRUE FALSE FALSE FALSE FALSE  TRUE  TRUE
 [7177]  TRUE  TRUE  TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE
 [7189]  TRUE  TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
 [7201]  TRUE  TRUE FALSE  TRUE  TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
 [7213] FALSE FALSE  TRUE FALSE FALSE FALSE FALSE  TRUE FALSE  TRUE FALSE FALSE
 [7225] FALSE FALSE FALSE FALSE  TRUE  TRUE FALSE  TRUE  TRUE  TRUE FALSE FALSE
 [7237]  TRUE  TRUE  TRUE  TRUE FALSE FALSE  TRUE FALSE  TRUE  TRUE FALSE  TRUE
 [7249] FALSE  TRUE  TRUE  TRUE FALSE  TRUE FALSE  TRUE FALSE FALSE  TRUE  TRUE
 [7261]  TRUE FALSE FALSE  TRUE  TRUE  TRUE  TRUE FALSE FALSE FALSE FALSE FALSE
 [7273]  TRUE FALSE  TRUE FALSE  TRUE FALSE FALSE  TRUE FALSE FALSE FALSE  TRUE
 [7285]  TRUE  TRUE FALSE FALSE  TRUE FALSE  TRUE FALSE FALSE  TRUE FALSE FALSE
 [7297] FALSE  TRUE FALSE FALSE FALSE  TRUE  TRUE  TRUE FALSE FALSE FALSE FALSE
 [7309] FALSE  TRUE  TRUE FALSE FALSE FALSE  TRUE  TRUE  TRUE FALSE FALSE FALSE
 [7321] FALSE FALSE  TRUE  TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE
 [7333] FALSE FALSE  TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE
 [7345]  TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
 [7357]  TRUE  TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE
 [7369] FALSE  TRUE FALSE FALSE FALSE  TRUE  TRUE FALSE FALSE FALSE FALSE  TRUE
 [7381]  TRUE  TRUE FALSE  TRUE FALSE FALSE FALSE FALSE FALSE  TRUE FALSE  TRUE
 [7393]  TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE FALSE FALSE
 [7405]  TRUE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE  TRUE FALSE FALSE FALSE
 [7417]  TRUE FALSE  TRUE  TRUE FALSE FALSE FALSE  TRUE  TRUE FALSE FALSE FALSE
 [7429] FALSE  TRUE FALSE FALSE FALSE FALSE FALSE  TRUE FALSE  TRUE FALSE  TRUE
 [7441] FALSE  TRUE FALSE  TRUE FALSE FALSE  TRUE FALSE  TRUE FALSE  TRUE FALSE
 [7453]  TRUE  TRUE  TRUE  TRUE FALSE FALSE FALSE FALSE  TRUE  TRUE  TRUE FALSE
 [7465]  TRUE FALSE FALSE FALSE FALSE  TRUE  TRUE FALSE FALSE  TRUE FALSE FALSE
 [7477]  TRUE FALSE FALSE FALSE  TRUE FALSE FALSE  TRUE  TRUE FALSE FALSE FALSE
 [7489] FALSE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE FALSE  TRUE FALSE  TRUE
 [7501]  TRUE FALSE FALSE  TRUE FALSE  TRUE FALSE FALSE FALSE  TRUE FALSE FALSE
 [7513] FALSE  TRUE FALSE FALSE  TRUE  TRUE  TRUE FALSE  TRUE FALSE FALSE  TRUE
 [7525]  TRUE FALSE FALSE FALSE FALSE  TRUE FALSE  TRUE FALSE FALSE  TRUE  TRUE
 [7537]  TRUE FALSE FALSE FALSE  TRUE FALSE  TRUE  TRUE  TRUE  TRUE FALSE  TRUE
 [7549] FALSE FALSE FALSE FALSE  TRUE FALSE  TRUE FALSE  TRUE  TRUE FALSE FALSE
 [7561] FALSE FALSE FALSE  TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
 [7573] FALSE  TRUE FALSE FALSE  TRUE FALSE FALSE FALSE FALSE  TRUE FALSE FALSE
 [7585] FALSE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE FALSE FALSE FALSE FALSE
 [7597] FALSE FALSE FALSE FALSE FALSE  TRUE FALSE FALSE FALSE FALSE FALSE FALSE
 [7609] FALSE FALSE  TRUE FALSE FALSE FALSE FALSE  TRUE FALSE FALSE FALSE FALSE
 [7621]  TRUE FALSE  TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE  TRUE
 [7633]  TRUE  TRUE  TRUE FALSE FALSE FALSE FALSE FALSE  TRUE FALSE  TRUE FALSE
 [7645] FALSE FALSE FALSE FALSE FALSE FALSE  TRUE FALSE  TRUE FALSE FALSE FALSE
 [7657] FALSE FALSE  TRUE FALSE FALSE  TRUE FALSE FALSE  TRUE FALSE FALSE FALSE
 [7669] FALSE  TRUE FALSE  TRUE  TRUE FALSE FALSE FALSE FALSE  TRUE  TRUE FALSE
 [7681]  TRUE FALSE FALSE  TRUE FALSE FALSE FALSE FALSE  TRUE FALSE FALSE FALSE
 [7693] FALSE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE  TRUE FALSE FALSE  TRUE
 [7705]  TRUE  TRUE  TRUE FALSE  TRUE FALSE FALSE  TRUE FALSE  TRUE FALSE FALSE
 [7717]  TRUE  TRUE FALSE FALSE  TRUE  TRUE FALSE FALSE FALSE FALSE FALSE  TRUE
 [7729] FALSE FALSE FALSE FALSE  TRUE FALSE FALSE  TRUE  TRUE  TRUE  TRUE FALSE
 [7741]  TRUE  TRUE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE  TRUE FALSE  TRUE
 [7753] FALSE FALSE FALSE FALSE FALSE  TRUE FALSE FALSE FALSE  TRUE FALSE FALSE
 [7765]  TRUE  TRUE FALSE  TRUE FALSE FALSE  TRUE FALSE  TRUE FALSE FALSE FALSE
 [7777] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
 [7789] FALSE FALSE  TRUE FALSE  TRUE  TRUE FALSE FALSE  TRUE  TRUE FALSE FALSE
 [7801] FALSE FALSE  TRUE  TRUE FALSE FALSE FALSE FALSE  TRUE FALSE  TRUE FALSE
 [7813] FALSE  TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
 [7825]  TRUE FALSE FALSE  TRUE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE FALSE
 [7837] FALSE FALSE FALSE FALSE  TRUE FALSE  TRUE  TRUE FALSE FALSE FALSE FALSE
 [7849] FALSE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE  TRUE FALSE FALSE  TRUE
 [7861] FALSE  TRUE  TRUE  TRUE  TRUE FALSE FALSE FALSE  TRUE FALSE FALSE  TRUE
 [7873] FALSE  TRUE  TRUE FALSE FALSE FALSE  TRUE FALSE  TRUE FALSE FALSE FALSE
 [7885]  TRUE FALSE FALSE  TRUE FALSE  TRUE FALSE FALSE  TRUE  TRUE FALSE  TRUE
 [7897] FALSE  TRUE  TRUE FALSE FALSE FALSE  TRUE  TRUE  TRUE FALSE  TRUE  TRUE
 [7909] FALSE FALSE FALSE  TRUE FALSE FALSE  TRUE FALSE FALSE FALSE FALSE FALSE
 [7921] FALSE  TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE FALSE  TRUE
 [7933] FALSE  TRUE FALSE FALSE  TRUE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE
 [7945] FALSE  TRUE FALSE FALSE FALSE FALSE FALSE  TRUE FALSE  TRUE FALSE FALSE
 [7957] FALSE  TRUE FALSE  TRUE  TRUE FALSE  TRUE  TRUE FALSE  TRUE  TRUE FALSE
 [7969]  TRUE FALSE  TRUE FALSE FALSE  TRUE  TRUE FALSE  TRUE FALSE FALSE FALSE
 [7981] FALSE FALSE FALSE FALSE FALSE FALSE  TRUE FALSE FALSE  TRUE FALSE FALSE
 [7993] FALSE  TRUE FALSE  TRUE  TRUE  TRUE  TRUE  TRUE FALSE FALSE FALSE  TRUE
 [8005] FALSE FALSE  TRUE FALSE  TRUE  TRUE  TRUE FALSE FALSE FALSE FALSE  TRUE
 [8017] FALSE  TRUE  TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
 [8029] FALSE FALSE FALSE  TRUE FALSE FALSE FALSE  TRUE FALSE FALSE FALSE  TRUE
 [8041] FALSE FALSE  TRUE FALSE FALSE FALSE  TRUE FALSE FALSE FALSE FALSE FALSE
 [8053] FALSE FALSE  TRUE FALSE FALSE  TRUE FALSE FALSE  TRUE FALSE  TRUE  TRUE
 [8065] FALSE FALSE FALSE  TRUE FALSE  TRUE FALSE  TRUE FALSE FALSE FALSE  TRUE
 [8077] FALSE FALSE  TRUE FALSE  TRUE FALSE FALSE FALSE FALSE FALSE  TRUE FALSE
 [8089] FALSE FALSE  TRUE FALSE  TRUE  TRUE  TRUE FALSE  TRUE  TRUE FALSE FALSE
 [8101]  TRUE FALSE  TRUE  TRUE FALSE  TRUE  TRUE  TRUE FALSE FALSE FALSE FALSE
 [8113] FALSE  TRUE  TRUE FALSE  TRUE  TRUE  TRUE FALSE FALSE FALSE  TRUE  TRUE
 [8125] FALSE  TRUE  TRUE FALSE FALSE  TRUE  TRUE  TRUE  TRUE FALSE FALSE  TRUE
 [8137] FALSE FALSE FALSE FALSE FALSE  TRUE  TRUE FALSE FALSE FALSE FALSE FALSE
 [8149] FALSE  TRUE  TRUE FALSE  TRUE FALSE  TRUE  TRUE FALSE FALSE FALSE FALSE
 [8161]  TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE
 [8173] FALSE  TRUE FALSE FALSE FALSE  TRUE FALSE  TRUE  TRUE FALSE  TRUE  TRUE
 [8185] FALSE  TRUE  TRUE FALSE FALSE  TRUE  TRUE  TRUE FALSE FALSE  TRUE FALSE
 [8197]  TRUE  TRUE  TRUE  TRUE FALSE  TRUE  TRUE FALSE FALSE FALSE FALSE FALSE
 [8209] FALSE  TRUE FALSE  TRUE  TRUE FALSE  TRUE FALSE  TRUE FALSE  TRUE FALSE
 [8221]  TRUE  TRUE FALSE  TRUE  TRUE  TRUE FALSE FALSE FALSE  TRUE FALSE FALSE
 [8233]  TRUE  TRUE FALSE FALSE  TRUE  TRUE  TRUE  TRUE  TRUE FALSE  TRUE  TRUE
 [8245] FALSE FALSE  TRUE  TRUE FALSE FALSE FALSE  TRUE FALSE FALSE  TRUE  TRUE
 [8257]  TRUE FALSE FALSE  TRUE FALSE  TRUE  TRUE FALSE  TRUE FALSE FALSE FALSE
 [8269] FALSE FALSE FALSE  TRUE  TRUE  TRUE FALSE  TRUE FALSE FALSE FALSE FALSE
 [8281] FALSE FALSE FALSE  TRUE FALSE FALSE  TRUE FALSE FALSE FALSE  TRUE FALSE
 [8293] FALSE  TRUE FALSE FALSE FALSE FALSE FALSE  TRUE FALSE FALSE  TRUE FALSE
 [8305] FALSE FALSE  TRUE  TRUE  TRUE  TRUE FALSE FALSE FALSE  TRUE FALSE  TRUE
 [8317] FALSE FALSE  TRUE FALSE FALSE  TRUE FALSE  TRUE FALSE FALSE  TRUE  TRUE
 [8329] FALSE FALSE  TRUE FALSE FALSE  TRUE FALSE FALSE  TRUE FALSE  TRUE FALSE
 [8341] FALSE FALSE  TRUE FALSE  TRUE FALSE FALSE  TRUE FALSE FALSE  TRUE  TRUE
 [8353]  TRUE  TRUE FALSE FALSE FALSE FALSE FALSE  TRUE FALSE  TRUE  TRUE  TRUE
 [8365] FALSE FALSE FALSE  TRUE  TRUE  TRUE  TRUE FALSE FALSE FALSE  TRUE  TRUE
 [8377] FALSE FALSE  TRUE  TRUE  TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
 [8389] FALSE  TRUE  TRUE  TRUE  TRUE FALSE  TRUE  TRUE  TRUE  TRUE  TRUE FALSE
 [8401] FALSE FALSE  TRUE FALSE FALSE FALSE  TRUE FALSE FALSE FALSE  TRUE  TRUE
 [8413] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
 [8425] FALSE  TRUE FALSE FALSE FALSE  TRUE  TRUE FALSE FALSE FALSE  TRUE FALSE
 [8437] FALSE FALSE FALSE  TRUE FALSE  TRUE  TRUE FALSE FALSE FALSE  TRUE FALSE
 [8449]  TRUE  TRUE  TRUE FALSE  TRUE FALSE FALSE  TRUE  TRUE FALSE  TRUE FALSE
 [8461] FALSE FALSE FALSE FALSE FALSE  TRUE FALSE FALSE  TRUE  TRUE FALSE FALSE
 [8473]  TRUE  TRUE  TRUE FALSE FALSE FALSE FALSE  TRUE FALSE FALSE FALSE FALSE
 [8485] FALSE FALSE FALSE FALSE FALSE FALSE  TRUE FALSE FALSE  TRUE  TRUE  TRUE
 [8497] FALSE FALSE FALSE FALSE  TRUE  TRUE  TRUE  TRUE FALSE FALSE FALSE FALSE
 [8509] FALSE  TRUE  TRUE FALSE FALSE  TRUE FALSE FALSE FALSE FALSE  TRUE FALSE
 [8521] FALSE FALSE FALSE FALSE FALSE  TRUE FALSE FALSE  TRUE FALSE FALSE  TRUE
 [8533] FALSE FALSE FALSE  TRUE  TRUE  TRUE FALSE  TRUE  TRUE FALSE FALSE FALSE
 [8545] FALSE FALSE FALSE FALSE FALSE  TRUE FALSE FALSE  TRUE FALSE FALSE FALSE
 [8557]  TRUE FALSE  TRUE FALSE FALSE  TRUE FALSE FALSE  TRUE  TRUE FALSE FALSE
 [8569] FALSE  TRUE  TRUE FALSE  TRUE FALSE FALSE FALSE FALSE  TRUE  TRUE  TRUE
 [8581] FALSE FALSE  TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
 [8593]  TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
 [8605] FALSE FALSE FALSE FALSE FALSE FALSE  TRUE  TRUE  TRUE FALSE  TRUE FALSE
 [8617] FALSE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE  TRUE  TRUE FALSE FALSE
 [8629]  TRUE FALSE FALSE FALSE FALSE FALSE  TRUE  TRUE FALSE FALSE FALSE FALSE
 [8641] FALSE FALSE FALSE FALSE  TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
 [8653] FALSE FALSE  TRUE FALSE  TRUE  TRUE  TRUE FALSE FALSE FALSE  TRUE  TRUE
 [8665]  TRUE FALSE FALSE  TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
 [8677]  TRUE FALSE FALSE  TRUE FALSE  TRUE FALSE FALSE FALSE FALSE FALSE  TRUE
 [8689]  TRUE  TRUE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE  TRUE  TRUE FALSE
 [8701] FALSE FALSE FALSE  TRUE FALSE FALSE FALSE FALSE  TRUE FALSE  TRUE FALSE
 [8713] FALSE  TRUE FALSE  TRUE FALSE FALSE FALSE  TRUE  TRUE FALSE  TRUE  TRUE
 [8725]  TRUE FALSE FALSE FALSE FALSE  TRUE FALSE FALSE  TRUE  TRUE FALSE FALSE
 [8737]  TRUE FALSE  TRUE FALSE  TRUE  TRUE  TRUE FALSE  TRUE  TRUE  TRUE FALSE
 [8749] FALSE FALSE FALSE FALSE FALSE  TRUE  TRUE FALSE FALSE FALSE  TRUE  TRUE
 [8761]  TRUE FALSE FALSE  TRUE FALSE FALSE FALSE  TRUE  TRUE  TRUE  TRUE FALSE
 [8773] FALSE FALSE FALSE FALSE  TRUE FALSE FALSE  TRUE FALSE FALSE  TRUE  TRUE
 [8785]  TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
 [8797] FALSE FALSE FALSE FALSE  TRUE FALSE FALSE  TRUE  TRUE FALSE FALSE  TRUE
 [8809] FALSE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE FALSE FALSE FALSE  TRUE FALSE
 [8821] FALSE  TRUE  TRUE  TRUE  TRUE FALSE FALSE  TRUE FALSE  TRUE  TRUE  TRUE
 [8833]  TRUE  TRUE FALSE FALSE FALSE FALSE  TRUE FALSE FALSE FALSE FALSE FALSE
 [8845] FALSE  TRUE FALSE  TRUE  TRUE FALSE FALSE  TRUE FALSE FALSE FALSE FALSE
 [8857] FALSE  TRUE  TRUE FALSE FALSE  TRUE FALSE FALSE FALSE  TRUE FALSE FALSE
 [8869] FALSE  TRUE  TRUE  TRUE FALSE  TRUE FALSE  TRUE  TRUE FALSE FALSE FALSE
 [8881]  TRUE FALSE FALSE FALSE FALSE  TRUE  TRUE FALSE FALSE FALSE FALSE FALSE
 [8893] FALSE FALSE  TRUE  TRUE  TRUE FALSE FALSE FALSE FALSE FALSE  TRUE  TRUE
 [8905] FALSE  TRUE FALSE FALSE FALSE  TRUE FALSE  TRUE FALSE FALSE FALSE FALSE
 [8917] FALSE FALSE  TRUE FALSE  TRUE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE
 [8929]  TRUE  TRUE  TRUE FALSE FALSE FALSE  TRUE  TRUE FALSE FALSE FALSE FALSE
 [8941] FALSE  TRUE FALSE FALSE FALSE  TRUE FALSE  TRUE  TRUE FALSE  TRUE  TRUE
 [8953] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE FALSE
 [8965] FALSE FALSE  TRUE FALSE FALSE  TRUE FALSE  TRUE  TRUE  TRUE  TRUE FALSE
 [8977] FALSE FALSE  TRUE FALSE FALSE  TRUE FALSE  TRUE FALSE FALSE FALSE  TRUE
 [8989]  TRUE FALSE FALSE FALSE FALSE FALSE  TRUE  TRUE FALSE FALSE FALSE FALSE
 [9001] FALSE  TRUE  TRUE FALSE FALSE  TRUE FALSE FALSE FALSE FALSE FALSE  TRUE
 [9013]  TRUE  TRUE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE  TRUE FALSE FALSE
 [9025] FALSE FALSE  TRUE  TRUE FALSE  TRUE  TRUE  TRUE FALSE FALSE  TRUE  TRUE
 [9037] FALSE  TRUE FALSE  TRUE FALSE FALSE  TRUE FALSE FALSE FALSE  TRUE FALSE
 [9049] FALSE FALSE FALSE  TRUE FALSE FALSE FALSE FALSE  TRUE  TRUE FALSE FALSE
 [9061]  TRUE FALSE FALSE FALSE FALSE FALSE  TRUE FALSE  TRUE  TRUE FALSE FALSE
 [9073] FALSE  TRUE  TRUE FALSE FALSE FALSE  TRUE  TRUE FALSE FALSE FALSE  TRUE
 [9085] FALSE FALSE  TRUE  TRUE FALSE FALSE  TRUE  TRUE FALSE FALSE  TRUE FALSE
 [9097] FALSE  TRUE  TRUE  TRUE  TRUE FALSE  TRUE FALSE FALSE  TRUE  TRUE FALSE
 [9109]  TRUE FALSE FALSE FALSE FALSE FALSE  TRUE  TRUE FALSE  TRUE  TRUE FALSE
 [9121] FALSE  TRUE FALSE  TRUE FALSE FALSE FALSE FALSE  TRUE FALSE FALSE FALSE
 [9133] FALSE FALSE  TRUE  TRUE FALSE FALSE  TRUE FALSE FALSE FALSE FALSE FALSE
 [9145]  TRUE FALSE FALSE FALSE FALSE  TRUE FALSE FALSE  TRUE  TRUE FALSE FALSE
 [9157] FALSE FALSE FALSE FALSE FALSE  TRUE  TRUE FALSE FALSE  TRUE  TRUE  TRUE
 [9169] FALSE  TRUE FALSE FALSE FALSE FALSE FALSE  TRUE FALSE FALSE  TRUE FALSE
 [9181]  TRUE FALSE  TRUE FALSE FALSE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE
 [9193] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE
 [9205]  TRUE FALSE  TRUE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE FALSE FALSE
 [9217]  TRUE FALSE  TRUE FALSE FALSE FALSE  TRUE  TRUE  TRUE FALSE FALSE FALSE
 [9229]  TRUE  TRUE FALSE FALSE  TRUE FALSE  TRUE  TRUE  TRUE  TRUE FALSE FALSE
 [9241]  TRUE  TRUE FALSE FALSE  TRUE FALSE FALSE  TRUE  TRUE  TRUE FALSE FALSE
 [9253] FALSE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE  TRUE FALSE FALSE FALSE
 [9265]  TRUE  TRUE FALSE FALSE FALSE  TRUE  TRUE FALSE FALSE FALSE FALSE FALSE
 [9277] FALSE FALSE FALSE  TRUE  TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
 [9289] FALSE  TRUE FALSE  TRUE FALSE FALSE  TRUE  TRUE  TRUE FALSE FALSE  TRUE
 [9301]  TRUE  TRUE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE  TRUE  TRUE FALSE
 [9313] FALSE FALSE FALSE FALSE  TRUE FALSE FALSE FALSE FALSE FALSE  TRUE FALSE
 [9325] FALSE FALSE  TRUE  TRUE FALSE FALSE FALSE  TRUE  TRUE FALSE  TRUE FALSE
 [9337]  TRUE  TRUE  TRUE  TRUE  TRUE FALSE  TRUE  TRUE FALSE  TRUE FALSE FALSE
 [9349] FALSE FALSE  TRUE  TRUE  TRUE FALSE FALSE FALSE FALSE  TRUE  TRUE FALSE
 [9361] FALSE FALSE FALSE FALSE  TRUE FALSE FALSE FALSE FALSE FALSE  TRUE  TRUE
 [9373]  TRUE  TRUE FALSE FALSE FALSE  TRUE FALSE  TRUE FALSE  TRUE FALSE FALSE
 [9385] FALSE  TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE  TRUE FALSE
 [9397]  TRUE  TRUE FALSE FALSE  TRUE  TRUE FALSE FALSE FALSE FALSE FALSE FALSE
 [9409]  TRUE FALSE  TRUE  TRUE FALSE  TRUE FALSE  TRUE  TRUE FALSE  TRUE  TRUE
 [9421]  TRUE  TRUE FALSE  TRUE FALSE  TRUE  TRUE FALSE  TRUE  TRUE FALSE FALSE
 [9433] FALSE FALSE FALSE FALSE  TRUE FALSE FALSE FALSE FALSE  TRUE FALSE  TRUE
 [9445]  TRUE  TRUE FALSE  TRUE  TRUE  TRUE FALSE FALSE  TRUE FALSE  TRUE  TRUE
 [9457] FALSE FALSE  TRUE  TRUE  TRUE  TRUE  TRUE FALSE FALSE  TRUE FALSE  TRUE
 [9469]  TRUE FALSE  TRUE FALSE FALSE  TRUE  TRUE  TRUE FALSE FALSE  TRUE  TRUE
 [9481] FALSE FALSE FALSE FALSE  TRUE FALSE FALSE  TRUE FALSE  TRUE FALSE  TRUE
 [9493] FALSE  TRUE  TRUE FALSE  TRUE  TRUE FALSE FALSE  TRUE  TRUE FALSE  TRUE
 [9505] FALSE FALSE FALSE  TRUE FALSE  TRUE FALSE FALSE FALSE FALSE  TRUE FALSE
 [9517]  TRUE  TRUE FALSE FALSE  TRUE FALSE FALSE FALSE FALSE FALSE  TRUE  TRUE
 [9529]  TRUE FALSE FALSE  TRUE  TRUE FALSE  TRUE  TRUE  TRUE FALSE FALSE  TRUE
 [9541] FALSE  TRUE FALSE FALSE FALSE FALSE  TRUE  TRUE FALSE FALSE FALSE  TRUE
 [9553] FALSE  TRUE FALSE  TRUE FALSE FALSE FALSE FALSE  TRUE FALSE  TRUE  TRUE
 [9565] FALSE FALSE FALSE  TRUE  TRUE  TRUE FALSE  TRUE FALSE  TRUE FALSE FALSE
 [9577] FALSE  TRUE  TRUE  TRUE FALSE FALSE  TRUE FALSE FALSE  TRUE FALSE FALSE
 [9589] FALSE  TRUE  TRUE FALSE FALSE FALSE FALSE FALSE  TRUE  TRUE  TRUE  TRUE
 [9601] FALSE  TRUE  TRUE FALSE FALSE FALSE FALSE  TRUE FALSE FALSE FALSE FALSE
 [9613] FALSE FALSE FALSE FALSE  TRUE  TRUE FALSE FALSE  TRUE FALSE FALSE FALSE
 [9625] FALSE FALSE  TRUE FALSE FALSE  TRUE FALSE  TRUE FALSE FALSE FALSE  TRUE
 [9637] FALSE  TRUE FALSE  TRUE  TRUE FALSE FALSE  TRUE  TRUE FALSE  TRUE FALSE
 [9649] FALSE FALSE FALSE  TRUE FALSE  TRUE FALSE FALSE FALSE FALSE  TRUE FALSE
 [9661] FALSE FALSE  TRUE  TRUE FALSE FALSE FALSE  TRUE  TRUE FALSE  TRUE FALSE
 [9673] FALSE  TRUE FALSE  TRUE  TRUE  TRUE  TRUE FALSE FALSE FALSE FALSE  TRUE
 [9685]  TRUE FALSE FALSE FALSE  TRUE  TRUE FALSE FALSE FALSE FALSE  TRUE  TRUE
 [9697] FALSE  TRUE  TRUE  TRUE FALSE  TRUE FALSE  TRUE  TRUE FALSE FALSE  TRUE
 [9709] FALSE  TRUE FALSE  TRUE  TRUE  TRUE  TRUE FALSE FALSE FALSE  TRUE FALSE
 [9721]  TRUE  TRUE  TRUE FALSE FALSE FALSE FALSE  TRUE FALSE FALSE FALSE FALSE
 [9733] FALSE FALSE  TRUE FALSE  TRUE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE
 [9745] FALSE FALSE FALSE FALSE  TRUE FALSE FALSE FALSE FALSE  TRUE FALSE  TRUE
 [9757]  TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE  TRUE FALSE
 [9769] FALSE  TRUE FALSE FALSE FALSE FALSE FALSE  TRUE FALSE  TRUE FALSE  TRUE
 [9781] FALSE FALSE FALSE  TRUE  TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
 [9793] FALSE FALSE FALSE FALSE  TRUE FALSE FALSE FALSE  TRUE  TRUE  TRUE  TRUE
 [9805] FALSE FALSE FALSE FALSE  TRUE FALSE FALSE FALSE FALSE FALSE  TRUE  TRUE
 [9817] FALSE FALSE FALSE  TRUE FALSE FALSE FALSE FALSE  TRUE  TRUE FALSE  TRUE
 [9829] FALSE FALSE FALSE  TRUE FALSE FALSE  TRUE FALSE FALSE  TRUE FALSE FALSE
 [9841] FALSE FALSE FALSE  TRUE  TRUE FALSE FALSE FALSE FALSE FALSE  TRUE  TRUE
 [9853] FALSE FALSE  TRUE FALSE FALSE  TRUE  TRUE FALSE FALSE  TRUE  TRUE FALSE
 [9865]  TRUE  TRUE FALSE  TRUE FALSE FALSE FALSE  TRUE FALSE FALSE FALSE  TRUE
 [9877] FALSE  TRUE  TRUE FALSE FALSE  TRUE FALSE FALSE FALSE  TRUE  TRUE FALSE
 [9889] FALSE FALSE  TRUE FALSE FALSE  TRUE FALSE FALSE FALSE FALSE FALSE  TRUE
 [9901] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE FALSE FALSE
 [9913] FALSE FALSE  TRUE FALSE FALSE FALSE  TRUE  TRUE FALSE  TRUE FALSE FALSE
 [9925]  TRUE FALSE FALSE  TRUE FALSE FALSE  TRUE FALSE FALSE FALSE FALSE FALSE
 [9937] FALSE FALSE FALSE  TRUE FALSE FALSE  TRUE FALSE  TRUE FALSE  TRUE FALSE
 [9949] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE  TRUE  TRUE FALSE
 [9961] FALSE  TRUE FALSE FALSE FALSE FALSE FALSE  TRUE FALSE FALSE FALSE  TRUE
 [9973] FALSE  TRUE FALSE FALSE  TRUE  TRUE  TRUE FALSE  TRUE  TRUE FALSE FALSE
 [9985] FALSE FALSE FALSE FALSE FALSE  TRUE  TRUE FALSE  TRUE FALSE  TRUE  TRUE
 [9997] FALSE FALSE FALSE  TRUE

This code calculates and prints the number of duplicate rows in the nhanes dataset:

  • print('count of duplicate rows') outputs a message indicating what is being calculated.

  • sum(duplicated(nhanes)) counts how many rows are duplicates by summing the logical vector returned by duplicated(), where TRUE counts as 1 and FALSE as 0.

This gives the total number of duplicate rows present in the dataset.

# count of duplicated data
print('count of duplicate rows')
sum(duplicated(nhanes))
[1] "count of duplicate rows"
3221

This code creates datasets with unique rows and examines their contents:

  • data_uniq <- unique(nhanes) creates a new dataset by removing duplicate rows from nhanes using the base R unique() function.

  • data_dist <- distinct(nhanes) creates a new dataset with distinct rows from nhanes using the distinct() function from dplyr. Both unique() and distinct() generally serve the same purpose here.

  • head(data_uniq) displays the first six rows of the dataset with duplicates removed.

  • dim(data_uniq) returns the dimensions (number of rows and columns) of the unique dataset.

This helps confirm how many unique rows remain after removing duplicates.

# remove duplicate rows using both "unique" and "distinct"
data_uniq <- unique(nhanes)
data_dist <- distinct(nhanes)

head(data_uniq)
dim(data_uniq)
A tibble: 6 x 6
IDAge_yrBMIBPSurveyYrGender
<chr><dbl><dbl><dbl><chr><chr>
516243432.221132009_10male
51625 415.30 NA2009_10male
516304930.571122009_10female
51638 916.82 862009_10male
51646 820.641072009_10male
516474527.241182009_10female
  1. 6779
  2. 6

This code inspects the data_dist dataset, which contains distinct rows from nhanes:

  • head(data_dist) displays the first six rows of the data_dist dataset to preview the beginning of the data.

  • tail(data_dist) displays the last six rows to preview the end of the data.

  • dim(data_dist) returns the dimensions of data_dist (number of rows and columns).

These commands help verify the contents and size of the dataset after removing duplicates.

# remove duplicate rows using distinct -- needs tidyverse/dplyr
head(data_dist)
tail(data_dist)
dim(data_dist)
A tibble: 6 x 6
IDAge_yrBMIBPSurveyYrGender
<chr><dbl><dbl><dbl><chr><chr>
516243432.221132009_10male
51625 415.30 NA2009_10male
516304930.571122009_10female
51638 916.82 862009_10male
51646 820.641072009_10male
516474527.241182009_10female
A tibble: 6 x 6
IDAge_yrBMIBPSurveyYrGender
<chr><dbl><dbl><dbl><chr><chr>
719078023.21482011_12male
719086635.11142011_12female
719092829.41242011_12male
71910 0 NA NA2011_12female
719112731.31332011_12male
719156027.51472011_12male
  1. 6779
  2. 6

This code attempts to perform substitutions on the ID column in data_dist using the sub() function:

  • sub('5*', 'subj', data_dist$ID) replaces the first occurrence of the pattern '5*' in each element of the ID vector with the string "subj".

    • Note: In regex, '5*' means “zero or more 5s,” so this will match in many places, possibly not as intended.

  • sub('subj', '5', data_dist$ID) replaces the first occurrence of "subj" in each element of ID back to "5".

  • tail(data_dist) shows the last six rows of the data_dist dataset (note that the substitutions above do not modify data_dist unless you assign the results back).

Important: These sub() calls return modified vectors but do not change the original data_dist unless assigned

# Replacing specific string in the whole column with another string
sub('5*','subj', data_dist$ID)
sub('subj','5', data_dist$ID)
tail(data_dist)
  1. 'subj1624'
  2. 'subj1625'
  3. 'subj1630'
  4. 'subj1638'
  5. 'subj1646'
  6. 'subj1647'
  7. 'subj1654'
  8. 'subj1656'
  9. 'subj1657'
  10. 'subj1659'
  11. 'subj1666'
  12. 'subj1667'
  13. 'subj1671'
  14. 'subj1677'
  15. 'subj1678'
  16. 'subj1679'
  17. 'subj1685'
  18. 'subj1691'
  19. 'subj1692'
  20. 'subj1694'
  21. 'subj1695'
  22. 'subj1701'
  23. 'subj1702'
  24. 'subj1707'
  25. 'subj1710'
  26. 'subj1711'
  27. 'subj1715'
  28. 'subj1718'
  29. 'subj1719'
  30. 'subj1720'
  31. 'subj1722'
  32. 'subj1723'
  33. 'subj1724'
  34. 'subj1731'
  35. 'subj1732'
  36. 'subj1734'
  37. 'subj1741'
  38. 'subj1743'
  39. 'subj1745'
  40. 'subj1748'
  41. 'subj1752'
  42. 'subj1753'
  43. 'subj1754'
  44. 'subj1755'
  45. 'subj1758'
  46. 'subj1760'
  47. 'subj1761'
  48. 'subj1764'
  49. 'subj1765'
  50. 'subj1767'
  51. 'subj1768'
  52. 'subj1771'
  53. 'subj1772'
  54. 'subj1774'
  55. 'subj1776'
  56. 'subj1780'
  57. 'subj1781'
  58. 'subj1788'
  59. 'subj1789'
  60. 'subj1790'
  61. 'subj1794'
  62. 'subj1799'
  63. 'subj1801'
  64. 'subj1803'
  65. 'subj1804'
  66. 'subj1809'
  67. 'subj1810'
  68. 'subj1813'
  69. 'subj1814'
  70. 'subj1819'
  71. 'subj1828'
  72. 'subj1829'
  73. 'subj1832'
  74. 'subj1840'
  75. 'subj1845'
  76. 'subj1846'
  77. 'subj1849'
  78. 'subj1851'
  79. 'subj1856'
  80. 'subj1857'
  81. 'subj1861'
  82. 'subj1862'
  83. 'subj1863'
  84. 'subj1868'
  85. 'subj1875'
  86. 'subj1888'
  87. 'subj1892'
  88. 'subj1893'
  89. 'subj1896'
  90. 'subj1898'
  91. 'subj1899'
  92. 'subj1905'
  93. 'subj1906'
  94. 'subj1907'
  95. 'subj1910'
  96. 'subj1911'
  97. 'subj1912'
  98. 'subj1921'
  99. 'subj1928'
  100. 'subj1933'
  101. 'subj1943'
  102. 'subj1944'
  103. 'subj1945'
  104. 'subj1951'
  105. 'subj1952'
  106. 'subj1954'
  107. 'subj1958'
  108. 'subj1959'
  109. 'subj1961'
  110. 'subj1962'
  111. 'subj1963'
  112. 'subj1964'
  113. 'subj1966'
  114. 'subj1970'
  115. 'subj1971'
  116. 'subj1973'
  117. 'subj1974'
  118. 'subj1975'
  119. 'subj1976'
  120. 'subj1979'
  121. 'subj1982'
  122. 'subj1983'
  123. 'subj1984'
  124. 'subj1985'
  125. 'subj1991'
  126. 'subj1996'
  127. 'subj1997'
  128. 'subj2004'
  129. 'subj2009'
  130. 'subj2013'
  131. 'subj2016'
  132. 'subj2017'
  133. 'subj2019'
  134. 'subj2020'
  135. 'subj2022'
  136. 'subj2023'
  137. 'subj2027'
  138. 'subj2030'
  139. 'subj2031'
  140. 'subj2037'
  141. 'subj2038'
  142. 'subj2043'
  143. 'subj2044'
  144. 'subj2050'
  145. 'subj2054'
  146. 'subj2060'
  147. 'subj2063'
  148. 'subj2066'
  149. 'subj2067'
  150. 'subj2068'
  151. 'subj2069'
  152. 'subj2075'
  153. 'subj2080'
  154. 'subj2081'
  155. 'subj2083'
  156. 'subj2085'
  157. 'subj2088'
  158. 'subj2089'
  159. 'subj2090'
  160. 'subj2093'
  161. 'subj2094'
  162. 'subj2099'
  163. 'subj2101'
  164. 'subj2102'
  165. 'subj2104'
  166. 'subj2106'
  167. 'subj2107'
  168. 'subj2114'
  169. 'subj2115'
  170. 'subj2119'
  171. 'subj2120'
  172. 'subj2121'
  173. 'subj2122'
  174. 'subj2128'
  175. 'subj2131'
  176. 'subj2134'
  177. 'subj2135'
  178. 'subj2145'
  179. 'subj2148'
  180. 'subj2149'
  181. 'subj2151'
  182. 'subj2152'
  183. 'subj2154'
  184. 'subj2156'
  185. 'subj2157'
  186. 'subj2159'
  187. 'subj2160'
  188. 'subj2163'
  189. 'subj2168'
  190. 'subj2177'
  191. 'subj2179'
  192. 'subj2185'
  193. 'subj2187'
  194. 'subj2189'
  195. 'subj2192'
  196. 'subj2193'
  197. 'subj2194'
  198. 'subj2197'
  199. 'subj2202'
  200. 'subj2204'
  201. ...
  202. 'subj71306'
  203. 'subj71307'
  204. 'subj71309'
  205. 'subj71310'
  206. 'subj71315'
  207. 'subj71316'
  208. 'subj71326'
  209. 'subj71332'
  210. 'subj71334'
  211. 'subj71337'
  212. 'subj71338'
  213. 'subj71340'
  214. 'subj71346'
  215. 'subj71347'
  216. 'subj71354'
  217. 'subj71356'
  218. 'subj71359'
  219. 'subj71360'
  220. 'subj71361'
  221. 'subj71362'
  222. 'subj71365'
  223. 'subj71366'
  224. 'subj71368'
  225. 'subj71375'
  226. 'subj71377'
  227. 'subj71391'
  228. 'subj71392'
  229. 'subj71393'
  230. 'subj71399'
  231. 'subj71403'
  232. 'subj71409'
  233. 'subj71410'
  234. 'subj71415'
  235. 'subj71419'
  236. 'subj71420'
  237. 'subj71421'
  238. 'subj71422'
  239. 'subj71424'
  240. 'subj71425'
  241. 'subj71428'
  242. 'subj71435'
  243. 'subj71439'
  244. 'subj71440'
  245. 'subj71445'
  246. 'subj71449'
  247. 'subj71450'
  248. 'subj71452'
  249. 'subj71456'
  250. 'subj71459'
  251. 'subj71463'
  252. 'subj71464'
  253. 'subj71467'
  254. 'subj71470'
  255. 'subj71475'
  256. 'subj71478'
  257. 'subj71486'
  258. 'subj71488'
  259. 'subj71493'
  260. 'subj71495'
  261. 'subj71500'
  262. 'subj71510'
  263. 'subj71511'
  264. 'subj71526'
  265. 'subj71529'
  266. 'subj71530'
  267. 'subj71531'
  268. 'subj71532'
  269. 'subj71542'
  270. 'subj71545'
  271. 'subj71547'
  272. 'subj71552'
  273. 'subj71560'
  274. 'subj71564'
  275. 'subj71565'
  276. 'subj71567'
  277. 'subj71568'
  278. 'subj71569'
  279. 'subj71570'
  280. 'subj71572'
  281. 'subj71573'
  282. 'subj71575'
  283. 'subj71578'
  284. 'subj71581'
  285. 'subj71587'
  286. 'subj71588'
  287. 'subj71589'
  288. 'subj71592'
  289. 'subj71594'
  290. 'subj71596'
  291. 'subj71597'
  292. 'subj71598'
  293. 'subj71599'
  294. 'subj71604'
  295. 'subj71605'
  296. 'subj71611'
  297. 'subj71613'
  298. 'subj71619'
  299. 'subj71624'
  300. 'subj71632'
  301. 'subj71637'
  302. 'subj71638'
  303. 'subj71641'
  304. 'subj71644'
  305. 'subj71645'
  306. 'subj71646'
  307. 'subj71654'
  308. 'subj71656'
  309. 'subj71657'
  310. 'subj71658'
  311. 'subj71661'
  312. 'subj71662'
  313. 'subj71664'
  314. 'subj71667'
  315. 'subj71671'
  316. 'subj71675'
  317. 'subj71676'
  318. 'subj71678'
  319. 'subj71679'
  320. 'subj71684'
  321. 'subj71691'
  322. 'subj71693'
  323. 'subj71697'
  324. 'subj71698'
  325. 'subj71699'
  326. 'subj71701'
  327. 'subj71702'
  328. 'subj71704'
  329. 'subj71705'
  330. 'subj71707'
  331. 'subj71721'
  332. 'subj71725'
  333. 'subj71729'
  334. 'subj71730'
  335. 'subj71732'
  336. 'subj71733'
  337. 'subj71736'
  338. 'subj71737'
  339. 'subj71740'
  340. 'subj71744'
  341. 'subj71745'
  342. 'subj71754'
  343. 'subj71755'
  344. 'subj71756'
  345. 'subj71759'
  346. 'subj71762'
  347. 'subj71763'
  348. 'subj71764'
  349. 'subj71766'
  350. 'subj71767'
  351. 'subj71768'
  352. 'subj71769'
  353. 'subj71773'
  354. 'subj71775'
  355. 'subj71782'
  356. 'subj71784'
  357. 'subj71785'
  358. 'subj71786'
  359. 'subj71787'
  360. 'subj71788'
  361. 'subj71792'
  362. 'subj71793'
  363. 'subj71794'
  364. 'subj71796'
  365. 'subj71797'
  366. 'subj71799'
  367. 'subj71802'
  368. 'subj71808'
  369. 'subj71809'
  370. 'subj71810'
  371. 'subj71812'
  372. 'subj71816'
  373. 'subj71820'
  374. 'subj71822'
  375. 'subj71823'
  376. 'subj71825'
  377. 'subj71826'
  378. 'subj71828'
  379. 'subj71833'
  380. 'subj71835'
  381. 'subj71839'
  382. 'subj71847'
  383. 'subj71849'
  384. 'subj71852'
  385. 'subj71855'
  386. 'subj71857'
  387. 'subj71860'
  388. 'subj71868'
  389. 'subj71869'
  390. 'subj71873'
  391. 'subj71875'
  392. 'subj71879'
  393. 'subj71880'
  394. 'subj71882'
  395. 'subj71898'
  396. 'subj71907'
  397. 'subj71908'
  398. 'subj71909'
  399. 'subj71910'
  400. 'subj71911'
  401. 'subj71915'
  1. '51624'
  2. '51625'
  3. '51630'
  4. '51638'
  5. '51646'
  6. '51647'
  7. '51654'
  8. '51656'
  9. '51657'
  10. '51659'
  11. '51666'
  12. '51667'
  13. '51671'
  14. '51677'
  15. '51678'
  16. '51679'
  17. '51685'
  18. '51691'
  19. '51692'
  20. '51694'
  21. '51695'
  22. '51701'
  23. '51702'
  24. '51707'
  25. '51710'
  26. '51711'
  27. '51715'
  28. '51718'
  29. '51719'
  30. '51720'
  31. '51722'
  32. '51723'
  33. '51724'
  34. '51731'
  35. '51732'
  36. '51734'
  37. '51741'
  38. '51743'
  39. '51745'
  40. '51748'
  41. '51752'
  42. '51753'
  43. '51754'
  44. '51755'
  45. '51758'
  46. '51760'
  47. '51761'
  48. '51764'
  49. '51765'
  50. '51767'
  51. '51768'
  52. '51771'
  53. '51772'
  54. '51774'
  55. '51776'
  56. '51780'
  57. '51781'
  58. '51788'
  59. '51789'
  60. '51790'
  61. '51794'
  62. '51799'
  63. '51801'
  64. '51803'
  65. '51804'
  66. '51809'
  67. '51810'
  68. '51813'
  69. '51814'
  70. '51819'
  71. '51828'
  72. '51829'
  73. '51832'
  74. '51840'
  75. '51845'
  76. '51846'
  77. '51849'
  78. '51851'
  79. '51856'
  80. '51857'
  81. '51861'
  82. '51862'
  83. '51863'
  84. '51868'
  85. '51875'
  86. '51888'
  87. '51892'
  88. '51893'
  89. '51896'
  90. '51898'
  91. '51899'
  92. '51905'
  93. '51906'
  94. '51907'
  95. '51910'
  96. '51911'
  97. '51912'
  98. '51921'
  99. '51928'
  100. '51933'
  101. '51943'
  102. '51944'
  103. '51945'
  104. '51951'
  105. '51952'
  106. '51954'
  107. '51958'
  108. '51959'
  109. '51961'
  110. '51962'
  111. '51963'
  112. '51964'
  113. '51966'
  114. '51970'
  115. '51971'
  116. '51973'
  117. '51974'
  118. '51975'
  119. '51976'
  120. '51979'
  121. '51982'
  122. '51983'
  123. '51984'
  124. '51985'
  125. '51991'
  126. '51996'
  127. '51997'
  128. '52004'
  129. '52009'
  130. '52013'
  131. '52016'
  132. '52017'
  133. '52019'
  134. '52020'
  135. '52022'
  136. '52023'
  137. '52027'
  138. '52030'
  139. '52031'
  140. '52037'
  141. '52038'
  142. '52043'
  143. '52044'
  144. '52050'
  145. '52054'
  146. '52060'
  147. '52063'
  148. '52066'
  149. '52067'
  150. '52068'
  151. '52069'
  152. '52075'
  153. '52080'
  154. '52081'
  155. '52083'
  156. '52085'
  157. '52088'
  158. '52089'
  159. '52090'
  160. '52093'
  161. '52094'
  162. '52099'
  163. '52101'
  164. '52102'
  165. '52104'
  166. '52106'
  167. '52107'
  168. '52114'
  169. '52115'
  170. '52119'
  171. '52120'
  172. '52121'
  173. '52122'
  174. '52128'
  175. '52131'
  176. '52134'
  177. '52135'
  178. '52145'
  179. '52148'
  180. '52149'
  181. '52151'
  182. '52152'
  183. '52154'
  184. '52156'
  185. '52157'
  186. '52159'
  187. '52160'
  188. '52163'
  189. '52168'
  190. '52177'
  191. '52179'
  192. '52185'
  193. '52187'
  194. '52189'
  195. '52192'
  196. '52193'
  197. '52194'
  198. '52197'
  199. '52202'
  200. '52204'
  201. ...
  202. '71306'
  203. '71307'
  204. '71309'
  205. '71310'
  206. '71315'
  207. '71316'
  208. '71326'
  209. '71332'
  210. '71334'
  211. '71337'
  212. '71338'
  213. '71340'
  214. '71346'
  215. '71347'
  216. '71354'
  217. '71356'
  218. '71359'
  219. '71360'
  220. '71361'
  221. '71362'
  222. '71365'
  223. '71366'
  224. '71368'
  225. '71375'
  226. '71377'
  227. '71391'
  228. '71392'
  229. '71393'
  230. '71399'
  231. '71403'
  232. '71409'
  233. '71410'
  234. '71415'
  235. '71419'
  236. '71420'
  237. '71421'
  238. '71422'
  239. '71424'
  240. '71425'
  241. '71428'
  242. '71435'
  243. '71439'
  244. '71440'
  245. '71445'
  246. '71449'
  247. '71450'
  248. '71452'
  249. '71456'
  250. '71459'
  251. '71463'
  252. '71464'
  253. '71467'
  254. '71470'
  255. '71475'
  256. '71478'
  257. '71486'
  258. '71488'
  259. '71493'
  260. '71495'
  261. '71500'
  262. '71510'
  263. '71511'
  264. '71526'
  265. '71529'
  266. '71530'
  267. '71531'
  268. '71532'
  269. '71542'
  270. '71545'
  271. '71547'
  272. '71552'
  273. '71560'
  274. '71564'
  275. '71565'
  276. '71567'
  277. '71568'
  278. '71569'
  279. '71570'
  280. '71572'
  281. '71573'
  282. '71575'
  283. '71578'
  284. '71581'
  285. '71587'
  286. '71588'
  287. '71589'
  288. '71592'
  289. '71594'
  290. '71596'
  291. '71597'
  292. '71598'
  293. '71599'
  294. '71604'
  295. '71605'
  296. '71611'
  297. '71613'
  298. '71619'
  299. '71624'
  300. '71632'
  301. '71637'
  302. '71638'
  303. '71641'
  304. '71644'
  305. '71645'
  306. '71646'
  307. '71654'
  308. '71656'
  309. '71657'
  310. '71658'
  311. '71661'
  312. '71662'
  313. '71664'
  314. '71667'
  315. '71671'
  316. '71675'
  317. '71676'
  318. '71678'
  319. '71679'
  320. '71684'
  321. '71691'
  322. '71693'
  323. '71697'
  324. '71698'
  325. '71699'
  326. '71701'
  327. '71702'
  328. '71704'
  329. '71705'
  330. '71707'
  331. '71721'
  332. '71725'
  333. '71729'
  334. '71730'
  335. '71732'
  336. '71733'
  337. '71736'
  338. '71737'
  339. '71740'
  340. '71744'
  341. '71745'
  342. '71754'
  343. '71755'
  344. '71756'
  345. '71759'
  346. '71762'
  347. '71763'
  348. '71764'
  349. '71766'
  350. '71767'
  351. '71768'
  352. '71769'
  353. '71773'
  354. '71775'
  355. '71782'
  356. '71784'
  357. '71785'
  358. '71786'
  359. '71787'
  360. '71788'
  361. '71792'
  362. '71793'
  363. '71794'
  364. '71796'
  365. '71797'
  366. '71799'
  367. '71802'
  368. '71808'
  369. '71809'
  370. '71810'
  371. '71812'
  372. '71816'
  373. '71820'
  374. '71822'
  375. '71823'
  376. '71825'
  377. '71826'
  378. '71828'
  379. '71833'
  380. '71835'
  381. '71839'
  382. '71847'
  383. '71849'
  384. '71852'
  385. '71855'
  386. '71857'
  387. '71860'
  388. '71868'
  389. '71869'
  390. '71873'
  391. '71875'
  392. '71879'
  393. '71880'
  394. '71882'
  395. '71898'
  396. '71907'
  397. '71908'
  398. '71909'
  399. '71910'
  400. '71911'
  401. '71915'
A tibble: 6 x 6
IDAge_yrBMIBPSurveyYrGender
<chr><dbl><dbl><dbl><chr><chr>
719078023.21482011_12male
719086635.11142011_12female
719092829.41242011_12male
71910 0 NA NA2011_12female
719112731.31332011_12male
719156027.51472011_12male

Subsetting the data using condition on columns using “filter” function#

This code filters the data_dist dataset to create a subset and inspects it:

  • filter(data_dist, Age_yr == 34, Gender == 'male') selects rows where the Age_yr column equals 34 and the Gender column equals 'male'. This uses the filter() function from dplyr.

  • The resulting filtered data is saved as age_34_data.

  • age_34_data prints the filtered dataset to the console or notebook.

  • dim(age_34_data) returns the dimensions (number of rows and columns) of this subset, showing how many male individuals aged 34 are present.

# Condition -- Find all columns where Age is 34 and gender is 'male'
age_34_data <- filter(data_dist, Age_yr == 34, Gender == 'male')
age_34_data
dim(age_34_data)
A tibble: 36 x 6
IDAge_yrBMIBPSurveyYrGender
<chr><dbl><dbl><dbl><chr><chr>
516243432.221132009_10male
527893422.311072009_10male
541233426.961042009_10male
541483428.691242009_10male
545643428.701162009_10male
546363420.451062009_10male
560893440.681242009_10male
566243428.591202009_10male
570243431.061232009_10male
571843431.231242009_10male
572443425.361152009_10male
572903427.281252009_10male
574813426.061292009_10male
582613432.761182009_10male
585583424.151242009_10male
587063425.821292009_10male
601863425.371182009_10male
615453423.091152009_10male
638493430.101212011_12male
657733449.701382011_12male
659463422.501022011_12male
660613424.301242011_12male
665053423.001152011_12male
665913435.001202011_12male
669333421.101142011_12male
674903427.201072011_12male
678933426.701222011_12male
680213423.701072011_12male
685923424.601272011_12male
701613444.90 982011_12male
701623430.501472011_12male
704853420.601022011_12male
705483424.501142011_12male
710793422.301162011_12male
711463423.601212011_12male
717923425.601032011_12male
  1. 36
  2. 6

This code creates a subset of data_dist with male individuals whose age falls within a specified range:

  • The pipe operator %>% passes data_dist into the filter() function.

  • filter(between(Age_yr, 34, 40), Gender == 'male') selects rows where:

    • Age_yr is between 34 and 40 (inclusive), using the between() function.

    • Gender is “male”.

  • The filtered dataset is saved as age_range_data.

  • age_range_data prints the filtered data to the console or notebook output.

#Condition --  find the data for age between 34 to 40
age_range_data <- data_dist %>% filter(between(Age_yr, 34, 40), Gender == 'male')
age_range_data
A tibble: 304 x 6
IDAge_yrBMIBPSurveyYrGender
<chr><dbl><dbl><dbl><chr><chr>
516243432.221132009_10male
516943835.841472009_10male
517013625.951172009_10male
518323825.911182009_10male
519913528.821212009_10male
520133628.091022009_10male
520503932.701272009_10male
521794035.451172009_10male
521973940.661402009_10male
522143826.661252009_10male
523953531.52 NA2009_10male
525013824.791362009_10male
525383730.921402009_10male
525843926.141212009_10male
526213532.751262009_10male
526483929.861272009_10male
527893422.311072009_10male
529483632.53 NA2009_10male
529753721.961062009_10male
529803830.901192009_10male
531273932.651432009_10male
532213930.401252009_10male
533253736.261492009_10male
534183941.491242009_10male
534763528.981142009_10male
535694039.161182009_10male
536214026.391032009_10male
536723631.701172009_10male
537023824.271252009_10male
537423822.851132009_10male
..................
701613444.9 982011_12male
701623430.51472011_12male
701963730.9 952011_12male
702133528.21242011_12male
704853420.61022011_12male
705354026.31302011_12male
705483424.51142011_12male
705513728.31252011_12male
707573621.71182011_12male
708513622.91122011_12male
708693835.41092011_12male
709733922.41212011_12male
710793422.31162011_12male
711193625.21172011_12male
711463423.61212011_12male
711583922.31062011_12male
711833822.61102011_12male
712794025.11472011_12male
713683520.61312011_12male
714153827.3 NA2011_12male
714283545.31112011_12male
714523625.0 NA2011_12male
715313522.41432011_12male
715673526.91202011_12male
715813638.71272011_12male
717634020.91212011_12male
717673826.61162011_12male
717923425.61032011_12male
718473726.01162011_12male
718573923.81182011_12male

This code filters the data_dist dataset to select male individuals older than 50:

  • The pipe operator %>% passes data_dist into filter().

  • filter(Age_yr > 50, Gender == 'male') selects rows where:

    • Age_yr is greater than 50.

    • Gender is 'male'.

  • The resulting subset is saved as age_gt_data.

  • age_gt_data prints this filtered dataset to the console or notebook output.

#Condition --  find the data for age greater than 50
age_gt_data <- data_dist %>% filter(Age_yr > 50, Gender == 'male')
age_gt_data
A tibble: 923 x 6
IDAge_yrBMIBPSurveyYrGender
<chr><dbl><dbl><dbl><chr><chr>
516546623.671112009_10male
516565823.691042009_10male
516575426.031342009_10male
516786025.841522009_10male
516925436.32 902009_10male
517485624.98 862009_10male
518035829.271392009_10male
518048017.871322009_10male
518198034.041252009_10male
518618029.341492009_10male
518886327.461272009_10male
519215526.971812009_10male
519335435.821912009_10male
519755731.881272009_10male
519767927.781462009_10male
520236531.281302009_10male
520275522.811342009_10male
520317730.341422009_10male
520436228.971102009_10male
520687228.151062009_10male
520816531.771262009_10male
520995630.271332009_10male
521226732.351402009_10male
521346148.221102009_10male
521357432.931332009_10male
521527028.641182009_10male
521687323.521782009_10male
521927326.391342009_10male
521935529.861162009_10male
522216522.011142009_10male
..................
713778022.1 NA2011_12male
713995521.61102011_12male
715116427.51162011_12male
715306826.71382011_12male
715526522.81592011_12male
715608027.11452011_12male
715695629.01472011_12male
715995930.51452011_12male
716137523.91742011_12male
716195522.61222011_12male
716565823.81142011_12male
716627429.81392011_12male
716716522.61282011_12male
716768027.01202011_12male
716977428.61432011_12male
717047728.11352011_12male
717056738.51222011_12male
717326330.31232011_12male
717338031.71392011_12male
717367426.41052011_12male
717566323.71312011_12male
717735328.0 862011_12male
717756240.71092011_12male
717856428.41382011_12male
7179780 NA1532011_12male
717995922.51472011_12male
718025331.31392011_12male
718696937.81082011_12male
719078023.21482011_12male
719156027.51472011_12male

Handling Missing Data#

This code prints the number of missing (NA) values in specific columns of the data_dist dataset:

  • For each column (BP, BMI, Age_yr, ID), it calculates the total count of NA values using sum(is.na(...)).

  • cat() is used to combine a descriptive message and the count into a single output.

# Count the number of rows with column values as NA
cat('Number of missing values in column BloodPressure:', sum(is.na(data_dist$BP)), '\n')
cat('Number of missing values in column BMI:', sum(is.na(data_dist$BMI)), '\n')
cat('Number of missing values in column Age:',sum(is.na(data_dist$Age_yr)), '\n')
cat('Number of missing values in column ID:',sum(is.na(data_dist$ID)), '\n')
Number of missing values in column BloodPressure: 1137 
Number of missing values in column BMI: 304 
Number of missing values in column Age: 0 
Number of missing values in column ID: 0 

Data Imputation - Replacing NA by Some Other Values#

This code performs mean imputation to fill missing values (NAs) in the data_dist dataset and then checks the number of remaining missing values:

  • impData_mean <- data_dist creates a copy of data_dist called impData_mean to keep the original data intact.

  • impData_mean$BP[is.na(impData_mean$BP)] <- mean(impData_mean$BP, na.rm = TRUE):

    • Calculates the mean of the BP column, ignoring missing values (na.rm = TRUE).

    • Replaces all NAs in the BP column with this mean value.

  • Similarly, missing values in the BMI column are replaced with the column’s mean.

  • cat(' The number of NA in imputed dataframe', sum(is.na(impData_mean$BP))) prints how many NAs remain in the imputed BP column (should be zero after imputation).


If you want, I can help you write code to check missing values in other columns or implement other imputation methods!

# Replace NA by column 'mean'
impData_mean <- data_dist    #create a copy of original data
impData_mean$BP[is.na(impData_mean$BP)] <- mean(impData_mean$BP, na.rm = TRUE) # replace one column
impData_mean$BMI[is.na(impData_mean$BMI)] <- mean(impData_mean$BMI, na.rm = TRUE)
cat(' The number of NA in imputed dataframe', sum(is.na(impData_mean$BP)))
 The number of NA in imputed dataframe 0

This code performs zero imputation to fill missing values in the BP column:

  • impData_zero <- data_dist creates a copy of the data_dist dataset named impData_zero.

  • impData_zero$BP[is.na(impData_zero$BP)] <- 0 replaces all missing (NA) values in the BP column with zero (0).

  • head(impData_zero) displays the first six rows of the dataset after this replacement.

Zero imputation is a simple method where missing values are replaced with zero, which can be useful in some contexts but may also bias analyses depending on the data.

# Replace NA by some value (say 0)
impData_zero <- data_dist 
impData_zero$BP[is.na(impData_zero$BP)] <- 0
head(impData_zero)
A tibble: 6 x 6
IDAge_yrBMIBPSurveyYrGender
<chr><dbl><dbl><dbl><chr><chr>
516243432.221132009_10male
51625 415.30 02009_10male
516304930.571122009_10female
51638 916.82 862009_10male
51646 820.641072009_10male
516474527.241182009_10female

This code removes all rows containing any missing (NA) values from the dataset and reports the number of missing values before and after:

  • dataNo_na <- data_dist creates a copy of data_dist named dataNo_na.

  • cat('Before deleting all NA rows', sum(is.na(dataNo_na)), '\n') prints the total count of missing values across the entire dataset before cleaning.

  • dataNo_na <- na.omit(dataNo_na) removes all rows that have any missing values in any column.

  • cat('After deleting all NA rows', sum(is.na(dataNo_na)), '\n') prints the count of missing values after deletion (should be zero).

This is a straightforward way to get a dataset with no missing data by dropping incomplete records.

# Remove all the rows with NA entries
dataNo_na <- data_dist
cat('Before deleting all NA rows', sum(is.na(dataNo_na)), '\n')
dataNo_na <- na.omit(dataNo_na)
cat('After deleting all NA rows', sum(is.na(dataNo_na)), '\n')
Before deleting all NA rows 1441 
After deleting all NA rows 0 

This code removes rows with missing values specifically in the BP column and then counts remaining missing values:

  • rmCol_na <- data_dist %>% drop_na(BP) uses the drop_na() function from tidyr to remove any rows where the BP column has NA.

  • The pipe %>% passes data_dist into drop_na(BP).

  • sum(is.na(rmCol_na)) counts all missing values remaining in the resulting dataset across all columns.

This method selectively removes rows with missing BP but keeps rows with missing values in other columns.

# Removing soecific columns with NA
rmCol_na <- data_dist %>% drop_na(BP)
sum(is.na(rmCol_na))
44

Using apply Functions For Data With No NA Values#

This code uses the apply() function to perform operations across columns of the dataNo_na dataset:

  • apply(dataNo_na, 2, min):

    • Applies the min function to each column (1 specifies rows, 2 specifies columns).

    • Returns the minimum value found in each column.

    • Works properly for numeric columns; for character columns, may return unexpected results or errors.

  • apply(dataNo_na, 2, length):

    • Applies the length function to each column.

    • Returns the total number of elements (rows) in each column, which should be the same for all columns in a well-formed dataset.

Note: If your dataset has mixed types (numeric, character, factor), it’s often safer to apply such functions to only numeric columns, for example:

apply(dataNo_na[, sapply(dataNo_na, is.numeric)], 2, min)
# Find min, length of ALL the columns
apply(dataNo_na, 2, min)   # MARGIN = 1 (for row), 2 (for column)
apply(dataNo_na, 2, length) # find the length of each column
ID
'51624'
Age_yr
' 8'
BMI
'12.89'
BP
' 76'
SurveyYr
'2009_10'
Gender
'female'
ID
5598
Age_yr
5598
BMI
5598
BP
5598
SurveyYr
5598
Gender
5598

This code calculates the mean for selected numeric columns using both lapply() and sapply():

  • num_cols <- list(dataNo_na$Age_yr, dataNo_na$BMI, dataNo_na$BP):

    • Creates a list containing three numeric vectors from the dataNo_na dataset: Age_yr, BMI, and BP.

  • lapply(num_cols, mean):

    • Applies the mean function to each element (i.e., each column) of the list.

    • Returns a list of mean values.

  • sapply(num_cols, mean):

    • Similar to lapply(), but simplifies the result to a vector if possible.

    • In this case, it returns a numeric vector containing the mean of each column.

Both approaches compute the mean for each selected column, but sapply() provides a cleaner, simplified output.

#LAPPLY - Apply over a list or vector
num_cols <- list(dataNo_na$Age_yr, dataNo_na$BMI, dataNo_na$BP)
lapply(num_cols, mean)  # output as list
sapply(num_cols, mean) # output as vector
  1. 40.2992140050018
  2. 27.5776098606645
  3. 117.966059306895
  1. 40.2992140050018
  2. 27.5776098606645
  3. 117.966059306895

Using group_by For Grouping Data By Columns#

This code calculates summary statistics (means) for different gender groups in the dataset:

  • dataGrp.gender <- dataNo_na %>% group_by(Gender) %>% summarise(...):

    • Groups the dataNo_na dataset by the Gender column using group_by().

    • Calculates the mean for Age_yr, BP, and BMI within each gender group using summarise().

    • .groups = 'drop' ensures that the result is returned as a regular (ungrouped) data frame.

  • The results are saved to dataGrp.gender, which contains the average Age_yr, BP, and BMI for each gender.

  • print('The mean for age, BP, and BMI by gender is:') prints a descriptive message.

  • print(dataGrp.gender) displays the summarized table with means by gender.

# By one column - 'Gender'
dataGrp.gender <- dataNo_na %>% group_by(Gender)  %>%
  summarise(mean_age = mean(Age_yr), 
            mean_BP = mean(BP), 
            mean_BMI = mean(BMI), 
            .groups = 'drop')
print('The mean for age, BP, and BMI by gender is:')
print(dataGrp.gender)
[1] "The mean for age, BP, and BMI by gender is:"
# A tibble: 2 x 4
  Gender mean_age mean_BP mean_BMI
  <chr>     <dbl>   <dbl>    <dbl>
1 female     41.1    116.     27.9
2 male       39.5    120.     27.3

This code calculates summary statistics (means) grouped by both gender and survey year:

  • dataGrp.multi <- dataNo_na %>% group_by(Gender, SurveyYr) %>% summarise(...):

    • Groups the dataNo_na dataset by both Gender and SurveyYr using group_by().

    • Within each group (combination of gender and year), calculates:

      • mean_age: Mean of Age_yr.

      • mean_BP: Mean of BP.

      • mean_BMI: Mean of BMI.

    • Note: By default, summarise() keeps the grouping structure unless you specify .groups = 'drop'.

  • print('The mean for age, BP, and BMI by gender and year is:') prints a descriptive message.

  • print(dataGrp.multi) displays the summarized table with grouped means by gender and survey year.

# By multiple columns - 'Gender' and 'SurveyYr'
dataGrp.multi <- dataNo_na %>% group_by(Gender, SurveyYr)  %>%
  summarise(mean_age = mean(Age_yr), 
            mean_BP = mean(BP), 
            mean_BMI = mean(BMI))
print('The mean for age, BP, and BMI by gender and year is:')
print(dataGrp.multi)
`summarise()` has grouped output by 'Gender'. You can override using the
`.groups` argument.
[1] "The mean for age, BP, and BMI by gender and year is:"
# A tibble: 4 x 5
# Groups:   Gender [2]
  Gender SurveyYr mean_age mean_BP mean_BMI
  <chr>  <chr>       <dbl>   <dbl>    <dbl>
1 female 2009_10      41.4    116.     28.1
2 female 2011_12      40.6    117.     27.6
3 male   2009_10      39.7    120.     27.5
4 male   2011_12      39.4    120.     27.0

This code calculates the other summary statistics grouped by both gender and survey year:

  • Groups data by both Gender and SurveyYr.

  • Calculates:

    • min_age: Minimum age in each group.

    • max_age: Maximum age in each group.

    • sum_BP: Sum of blood pressure values in each group.

    • mean_BMI: Mean BMI for each group.

    • count: Number of observations (rows) per group.

  • .groups = 'drop' ensures the result is returned as an ungrouped data frame.

# similarly we can use min, max, sum, count function to aggregate
dataGrp.summary <- dataNo_na %>%
  group_by(Gender, SurveyYr) %>%
  summarise(
    min_age = min(Age_yr),
    max_age = max(Age_yr),
    sum_BP = sum(BP),
    mean_BMI = mean(BMI),
    count = n(),   # Count of rows in each group
    .groups = 'drop'
  )

print('Summary statistics by gender and year (min, max, sum, count):')
print(dataGrp.summary)
[1] "Summary statistics by gender and year (min, max, sum, count):"
# A tibble: 4 x 7
  Gender SurveyYr min_age max_age sum_BP mean_BMI count
  <chr>  <chr>      <dbl>   <dbl>  <dbl>    <dbl> <int>
1 female 2009_10        8      80 172971     28.1  1497
2 female 2011_12        8      80 154983     27.6  1328
3 male   2009_10        8      80 174366     27.5  1458
4 male   2011_12        8      80 158054     27.0  1315

Acknowledgements#

The Python code used in this notebook was originally written by Vandana Srivastava, AI/Data Science Specialist, University Libraries, USC.

Explanatory text, annotations, and additional instructional content were added by Meara Cox, USC 2026 Graduate.