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 thetidyverse
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 atidyverse
function from thereadr
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()
)
ID | SurveyYr | Gender | Age | AgeDecade | AgeMonths | Race1 | Race3 | Education | MaritalStatus | ... | RegularMarij | AgeRegMarij | HardDrugs | SexEver | SexAge | SexNumPartnLife | SexNumPartYear | SameSex | SexOrientation | PregnantNow |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
<dbl> | <chr> | <chr> | <dbl> | <chr> | <dbl> | <chr> | <chr> | <chr> | <chr> | ... | <chr> | <dbl> | <chr> | <chr> | <dbl> | <dbl> | <dbl> | <chr> | <chr> | <chr> |
51624 | 2009_10 | male | 34 | 30-39 | 409 | White | NA | High School | Married | ... | No | NA | Yes | Yes | 16 | 8 | 1 | No | Heterosexual | NA |
51624 | 2009_10 | male | 34 | 30-39 | 409 | White | NA | High School | Married | ... | No | NA | Yes | Yes | 16 | 8 | 1 | No | Heterosexual | NA |
51624 | 2009_10 | male | 34 | 30-39 | 409 | White | NA | High School | Married | ... | No | NA | Yes | Yes | 16 | 8 | 1 | No | Heterosexual | NA |
51625 | 2009_10 | male | 4 | 0-9 | 49 | Other | NA | NA | NA | ... | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
51630 | 2009_10 | female | 49 | 40-49 | 596 | White | NA | Some College | LivePartner | ... | No | NA | Yes | Yes | 12 | 10 | 1 | Yes | Heterosexual | NA |
51638 | 2009_10 | male | 9 | 0-9 | 115 | White | NA | NA | NA | ... | NA | NA | NA | NA | NA | NA | NA | NA | 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 sinceNHANES
is a tibble (a modern data frame), row names are usually not set and this will typically returnNULL
.
Tibbles generally avoid using row names, favoring row numbers instead.
# find column and row names of the tibble
colnames(NHANES)
rownames(NHANES)
- 'ID'
- 'SurveyYr'
- 'Gender'
- 'Age'
- 'AgeDecade'
- 'AgeMonths'
- 'Race1'
- 'Race3'
- 'Education'
- 'MaritalStatus'
- 'HHIncome'
- 'HHIncomeMid'
- 'Poverty'
- 'HomeRooms'
- 'HomeOwn'
- 'Work'
- 'Weight'
- 'Length'
- 'HeadCirc'
- 'Height'
- 'BMI'
- 'BMICatUnder20yrs'
- 'BMI_WHO'
- 'Pulse'
- 'BPSysAve'
- 'BPDiaAve'
- 'BPSys1'
- 'BPDia1'
- 'BPSys2'
- 'BPDia2'
- 'BPSys3'
- 'BPDia3'
- 'Testosterone'
- 'DirectChol'
- 'TotChol'
- 'UrineVol1'
- 'UrineFlow1'
- 'UrineVol2'
- 'UrineFlow2'
- 'Diabetes'
- 'DiabetesAge'
- 'HealthGen'
- 'DaysPhysHlthBad'
- 'DaysMentHlthBad'
- 'LittleInterest'
- 'Depressed'
- 'nPregnancies'
- 'nBabies'
- 'Age1stBaby'
- 'SleepHrsNight'
- 'SleepTrouble'
- 'PhysActive'
- 'PhysActiveDays'
- 'TVHrsDay'
- 'CompHrsDay'
- 'TVHrsDayChild'
- 'CompHrsDayChild'
- 'Alcohol12PlusYr'
- 'AlcoholDay'
- 'AlcoholYear'
- 'SmokeNow'
- 'Smoke100'
- 'Smoke100n'
- 'SmokeAge'
- 'Marijuana'
- 'AgeFirstMarij'
- 'RegularMarij'
- 'AgeRegMarij'
- 'HardDrugs'
- 'SexEver'
- 'SexAge'
- 'SexNumPartnLife'
- 'SexNumPartYear'
- 'SameSex'
- 'SexOrientation'
- 'PregnantNow'
- '1'
- '2'
- '3'
- '4'
- '5'
- '6'
- '7'
- '8'
- '9'
- '10'
- '11'
- '12'
- '13'
- '14'
- '15'
- '16'
- '17'
- '18'
- '19'
- '20'
- '21'
- '22'
- '23'
- '24'
- '25'
- '26'
- '27'
- '28'
- '29'
- '30'
- '31'
- '32'
- '33'
- '34'
- '35'
- '36'
- '37'
- '38'
- '39'
- '40'
- '41'
- '42'
- '43'
- '44'
- '45'
- '46'
- '47'
- '48'
- '49'
- '50'
- '51'
- '52'
- '53'
- '54'
- '55'
- '56'
- '57'
- '58'
- '59'
- '60'
- '61'
- '62'
- '63'
- '64'
- '65'
- '66'
- '67'
- '68'
- '69'
- '70'
- '71'
- '72'
- '73'
- '74'
- '75'
- '76'
- '77'
- '78'
- '79'
- '80'
- '81'
- '82'
- '83'
- '84'
- '85'
- '86'
- '87'
- '88'
- '89'
- '90'
- '91'
- '92'
- '93'
- '94'
- '95'
- '96'
- '97'
- '98'
- '99'
- '100'
- '101'
- '102'
- '103'
- '104'
- '105'
- '106'
- '107'
- '108'
- '109'
- '110'
- '111'
- '112'
- '113'
- '114'
- '115'
- '116'
- '117'
- '118'
- '119'
- '120'
- '121'
- '122'
- '123'
- '124'
- '125'
- '126'
- '127'
- '128'
- '129'
- '130'
- '131'
- '132'
- '133'
- '134'
- '135'
- '136'
- '137'
- '138'
- '139'
- '140'
- '141'
- '142'
- '143'
- '144'
- '145'
- '146'
- '147'
- '148'
- '149'
- '150'
- '151'
- '152'
- '153'
- '154'
- '155'
- '156'
- '157'
- '158'
- '159'
- '160'
- '161'
- '162'
- '163'
- '164'
- '165'
- '166'
- '167'
- '168'
- '169'
- '170'
- '171'
- '172'
- '173'
- '174'
- '175'
- '176'
- '177'
- '178'
- '179'
- '180'
- '181'
- '182'
- '183'
- '184'
- '185'
- '186'
- '187'
- '188'
- '189'
- '190'
- '191'
- '192'
- '193'
- '194'
- '195'
- '196'
- '197'
- '198'
- '199'
- '200'
- ...
- '9801'
- '9802'
- '9803'
- '9804'
- '9805'
- '9806'
- '9807'
- '9808'
- '9809'
- '9810'
- '9811'
- '9812'
- '9813'
- '9814'
- '9815'
- '9816'
- '9817'
- '9818'
- '9819'
- '9820'
- '9821'
- '9822'
- '9823'
- '9824'
- '9825'
- '9826'
- '9827'
- '9828'
- '9829'
- '9830'
- '9831'
- '9832'
- '9833'
- '9834'
- '9835'
- '9836'
- '9837'
- '9838'
- '9839'
- '9840'
- '9841'
- '9842'
- '9843'
- '9844'
- '9845'
- '9846'
- '9847'
- '9848'
- '9849'
- '9850'
- '9851'
- '9852'
- '9853'
- '9854'
- '9855'
- '9856'
- '9857'
- '9858'
- '9859'
- '9860'
- '9861'
- '9862'
- '9863'
- '9864'
- '9865'
- '9866'
- '9867'
- '9868'
- '9869'
- '9870'
- '9871'
- '9872'
- '9873'
- '9874'
- '9875'
- '9876'
- '9877'
- '9878'
- '9879'
- '9880'
- '9881'
- '9882'
- '9883'
- '9884'
- '9885'
- '9886'
- '9887'
- '9888'
- '9889'
- '9890'
- '9891'
- '9892'
- '9893'
- '9894'
- '9895'
- '9896'
- '9897'
- '9898'
- '9899'
- '9900'
- '9901'
- '9902'
- '9903'
- '9904'
- '9905'
- '9906'
- '9907'
- '9908'
- '9909'
- '9910'
- '9911'
- '9912'
- '9913'
- '9914'
- '9915'
- '9916'
- '9917'
- '9918'
- '9919'
- '9920'
- '9921'
- '9922'
- '9923'
- '9924'
- '9925'
- '9926'
- '9927'
- '9928'
- '9929'
- '9930'
- '9931'
- '9932'
- '9933'
- '9934'
- '9935'
- '9936'
- '9937'
- '9938'
- '9939'
- '9940'
- '9941'
- '9942'
- '9943'
- '9944'
- '9945'
- '9946'
- '9947'
- '9948'
- '9949'
- '9950'
- '9951'
- '9952'
- '9953'
- '9954'
- '9955'
- '9956'
- '9957'
- '9958'
- '9959'
- '9960'
- '9961'
- '9962'
- '9963'
- '9964'
- '9965'
- '9966'
- '9967'
- '9968'
- '9969'
- '9970'
- '9971'
- '9972'
- '9973'
- '9974'
- '9975'
- '9976'
- '9977'
- '9978'
- '9979'
- '9980'
- '9981'
- '9982'
- '9983'
- '9984'
- '9985'
- '9986'
- '9987'
- '9988'
- '9989'
- '9990'
- '9991'
- '9992'
- '9993'
- '9994'
- '9995'
- '9996'
- '9997'
- '9998'
- '9999'
- '10000'
This code extracts a subset of columns from the NHANES
dataset and renames one of them:
The
%>%
pipe operator passes theNHANES
dataset into theselect()
function fromdplyr
.select(ID, Age, BMI, BloodPressure = BPSysAve, SurveyYr, Gender)
:Extracts the columns:
ID
,Age
,BMI
,BPSysAve
,SurveyYr
, andGender
.Renames the column
BPSysAve
toBloodPressure
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)
ID | Age | BMI | BloodPressure | SurveyYr | Gender |
---|---|---|---|---|---|
<dbl> | <dbl> | <dbl> | <dbl> | <chr> | <chr> |
51624 | 34 | 32.22 | 113 | 2009_10 | male |
51624 | 34 | 32.22 | 113 | 2009_10 | male |
51624 | 34 | 32.22 | 113 | 2009_10 | male |
51625 | 4 | 15.30 | NA | 2009_10 | male |
51630 | 49 | 30.57 | 112 | 2009_10 | female |
51638 | 9 | 16.82 | 86 | 2009_10 | male |
This code renames multiple columns in the nhanes
dataset using the rename()
function from dplyr
:
The
%>%
pipe passes thenhanes
tibble into therename()
function.Inside
rename()
:BP = BloodPressure
renames theBloodPressure
column toBP
.Age_yr = Age
renames theAge
column toAge_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)
ID | Age_yr | BMI | BP | SurveyYr | Gender |
---|---|---|---|---|---|
<dbl> | <dbl> | <dbl> | <dbl> | <chr> | <chr> |
51624 | 34 | 32.22 | 113 | 2009_10 | male |
51624 | 34 | 32.22 | 113 | 2009_10 | male |
51624 | 34 | 32.22 | 113 | 2009_10 | male |
51625 | 4 | 15.30 | NA | 2009_10 | male |
51630 | 49 | 30.57 | 112 | 2009_10 | female |
51638 | 9 | 16.82 | 86 | 2009_10 | male |
This code demonstrates different ways to access columns in the nhanes
tibble:
nhanes$ID
— Accesses theID
column directly as a vector. This is one of the most common and convenient ways to extract a single column.nhanes['ID']
— Returns theID
column as a tibble with one column. By default, only the first 10 rows are displayed. To see more, you can useprint(nhanes['ID'], n = ...)
.nhanes[['ID']]
— Extracts theID
column as a vector, similar tonhanes$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']]
- '51624'
- '51624'
- '51624'
- '51625'
- '51630'
- '51638'
- '51646'
- '51647'
- '51647'
- '51647'
- '51654'
- '51656'
- '51657'
- '51659'
- '51666'
- '51667'
- '51671'
- '51677'
- '51678'
- '51679'
- '51685'
- '51685'
- '51691'
- '51692'
- '51692'
- '51694'
- '51695'
- '51701'
- '51702'
- '51702'
- '51707'
- '51710'
- '51711'
- '51711'
- '51715'
- '51718'
- '51718'
- '51719'
- '51720'
- '51720'
- '51722'
- '51722'
- '51722'
- '51722'
- '51723'
- '51724'
- '51731'
- '51732'
- '51734'
- '51741'
- '51741'
- '51743'
- '51743'
- '51745'
- '51748'
- '51752'
- '51753'
- '51754'
- '51754'
- '51754'
- '51755'
- '51758'
- '51760'
- '51761'
- '51761'
- '51764'
- '51764'
- '51764'
- '51765'
- '51767'
- '51767'
- '51768'
- '51768'
- '51771'
- '51772'
- '51774'
- '51774'
- '51774'
- '51776'
- '51780'
- '51780'
- '51780'
- '51781'
- '51781'
- '51781'
- '51781'
- '51788'
- '51788'
- '51789'
- '51790'
- '51790'
- '51794'
- '51799'
- '51801'
- '51803'
- '51804'
- '51809'
- '51810'
- '51813'
- '51814'
- '51819'
- '51828'
- '51828'
- '51829'
- '51829'
- '51829'
- '51832'
- '51832'
- '51832'
- '51840'
- '51845'
- '51846'
- '51846'
- '51849'
- '51851'
- '51856'
- '51857'
- '51857'
- '51857'
- '51857'
- '51861'
- '51862'
- '51863'
- '51868'
- '51875'
- '51888'
- '51892'
- '51893'
- '51896'
- '51898'
- '51899'
- '51899'
- '51899'
- '51905'
- '51905'
- '51906'
- '51907'
- '51910'
- '51911'
- '51911'
- '51912'
- '51921'
- '51928'
- '51933'
- '51943'
- '51943'
- '51944'
- '51944'
- '51945'
- '51951'
- '51951'
- '51952'
- '51954'
- '51954'
- '51958'
- '51958'
- '51958'
- '51958'
- '51959'
- '51961'
- '51962'
- '51963'
- '51963'
- '51964'
- '51966'
- '51970'
- '51971'
- '51973'
- '51973'
- '51974'
- '51975'
- '51976'
- '51976'
- '51979'
- '51982'
- '51982'
- '51983'
- '51984'
- '51985'
- '51985'
- '51991'
- '51996'
- '51996'
- '51997'
- '51997'
- '52004'
- '52009'
- '52009'
- '52013'
- '52013'
- '52016'
- '52017'
- '52017'
- '52019'
- '52020'
- '52022'
- '52023'
- '52023'
- '52027'
- '52030'
- ...
- '71531'
- '71531'
- '71531'
- '71531'
- '71532'
- '71542'
- '71545'
- '71547'
- '71547'
- '71552'
- '71560'
- '71564'
- '71565'
- '71567'
- '71567'
- '71567'
- '71568'
- '71569'
- '71570'
- '71570'
- '71572'
- '71573'
- '71575'
- '71578'
- '71578'
- '71578'
- '71581'
- '71581'
- '71587'
- '71588'
- '71589'
- '71589'
- '71592'
- '71594'
- '71594'
- '71596'
- '71597'
- '71597'
- '71598'
- '71599'
- '71604'
- '71605'
- '71611'
- '71611'
- '71611'
- '71613'
- '71619'
- '71624'
- '71632'
- '71637'
- '71637'
- '71637'
- '71638'
- '71641'
- '71641'
- '71644'
- '71645'
- '71645'
- '71645'
- '71646'
- '71654'
- '71654'
- '71654'
- '71656'
- '71656'
- '71656'
- '71657'
- '71657'
- '71658'
- '71661'
- '71662'
- '71662'
- '71664'
- '71667'
- '71671'
- '71671'
- '71675'
- '71675'
- '71675'
- '71676'
- '71678'
- '71678'
- '71679'
- '71684'
- '71691'
- '71691'
- '71691'
- '71693'
- '71697'
- '71698'
- '71698'
- '71699'
- '71701'
- '71701'
- '71702'
- '71704'
- '71705'
- '71707'
- '71721'
- '71721'
- '71725'
- '71729'
- '71730'
- '71732'
- '71733'
- '71736'
- '71737'
- '71740'
- '71744'
- '71744'
- '71745'
- '71754'
- '71755'
- '71756'
- '71756'
- '71759'
- '71762'
- '71763'
- '71763'
- '71763'
- '71764'
- '71764'
- '71766'
- '71767'
- '71767'
- '71768'
- '71769'
- '71769'
- '71773'
- '71775'
- '71775'
- '71782'
- '71784'
- '71785'
- '71786'
- '71787'
- '71788'
- '71792'
- '71793'
- '71793'
- '71794'
- '71796'
- '71796'
- '71797'
- '71797'
- '71799'
- '71799'
- '71802'
- '71808'
- '71809'
- '71810'
- '71812'
- '71816'
- '71820'
- '71822'
- '71823'
- '71823'
- '71823'
- '71823'
- '71825'
- '71826'
- '71826'
- '71828'
- '71833'
- '71835'
- '71839'
- '71847'
- '71847'
- '71849'
- '71852'
- '71855'
- '71855'
- '71857'
- '71857'
- '71860'
- '71868'
- '71868'
- '71868'
- '71868'
- '71869'
- '71869'
- '71869'
- '71873'
- '71875'
- '71879'
- '71880'
- '71882'
- '71898'
- '71907'
- '71907'
- '71907'
- '71908'
- '71908'
- '71909'
- '71909'
- '71909'
- '71910'
- '71911'
- '71915'
- '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
- '51624'
- '51624'
- '51624'
- '51625'
- '51630'
- '51638'
- '51646'
- '51647'
- '51647'
- '51647'
- '51654'
- '51656'
- '51657'
- '51659'
- '51666'
- '51667'
- '51671'
- '51677'
- '51678'
- '51679'
- '51685'
- '51685'
- '51691'
- '51692'
- '51692'
- '51694'
- '51695'
- '51701'
- '51702'
- '51702'
- '51707'
- '51710'
- '51711'
- '51711'
- '51715'
- '51718'
- '51718'
- '51719'
- '51720'
- '51720'
- '51722'
- '51722'
- '51722'
- '51722'
- '51723'
- '51724'
- '51731'
- '51732'
- '51734'
- '51741'
- '51741'
- '51743'
- '51743'
- '51745'
- '51748'
- '51752'
- '51753'
- '51754'
- '51754'
- '51754'
- '51755'
- '51758'
- '51760'
- '51761'
- '51761'
- '51764'
- '51764'
- '51764'
- '51765'
- '51767'
- '51767'
- '51768'
- '51768'
- '51771'
- '51772'
- '51774'
- '51774'
- '51774'
- '51776'
- '51780'
- '51780'
- '51780'
- '51781'
- '51781'
- '51781'
- '51781'
- '51788'
- '51788'
- '51789'
- '51790'
- '51790'
- '51794'
- '51799'
- '51801'
- '51803'
- '51804'
- '51809'
- '51810'
- '51813'
- '51814'
- '51819'
- '51828'
- '51828'
- '51829'
- '51829'
- '51829'
- '51832'
- '51832'
- '51832'
- '51840'
- '51845'
- '51846'
- '51846'
- '51849'
- '51851'
- '51856'
- '51857'
- '51857'
- '51857'
- '51857'
- '51861'
- '51862'
- '51863'
- '51868'
- '51875'
- '51888'
- '51892'
- '51893'
- '51896'
- '51898'
- '51899'
- '51899'
- '51899'
- '51905'
- '51905'
- '51906'
- '51907'
- '51910'
- '51911'
- '51911'
- '51912'
- '51921'
- '51928'
- '51933'
- '51943'
- '51943'
- '51944'
- '51944'
- '51945'
- '51951'
- '51951'
- '51952'
- '51954'
- '51954'
- '51958'
- '51958'
- '51958'
- '51958'
- '51959'
- '51961'
- '51962'
- '51963'
- '51963'
- '51964'
- '51966'
- '51970'
- '51971'
- '51973'
- '51973'
- '51974'
- '51975'
- '51976'
- '51976'
- '51979'
- '51982'
- '51982'
- '51983'
- '51984'
- '51985'
- '51985'
- '51991'
- '51996'
- '51996'
- '51997'
- '51997'
- '52004'
- '52009'
- '52009'
- '52013'
- '52013'
- '52016'
- '52017'
- '52017'
- '52019'
- '52020'
- '52022'
- '52023'
- '52023'
- '52027'
- '52030'
- ...
- '71531'
- '71531'
- '71531'
- '71531'
- '71532'
- '71542'
- '71545'
- '71547'
- '71547'
- '71552'
- '71560'
- '71564'
- '71565'
- '71567'
- '71567'
- '71567'
- '71568'
- '71569'
- '71570'
- '71570'
- '71572'
- '71573'
- '71575'
- '71578'
- '71578'
- '71578'
- '71581'
- '71581'
- '71587'
- '71588'
- '71589'
- '71589'
- '71592'
- '71594'
- '71594'
- '71596'
- '71597'
- '71597'
- '71598'
- '71599'
- '71604'
- '71605'
- '71611'
- '71611'
- '71611'
- '71613'
- '71619'
- '71624'
- '71632'
- '71637'
- '71637'
- '71637'
- '71638'
- '71641'
- '71641'
- '71644'
- '71645'
- '71645'
- '71645'
- '71646'
- '71654'
- '71654'
- '71654'
- '71656'
- '71656'
- '71656'
- '71657'
- '71657'
- '71658'
- '71661'
- '71662'
- '71662'
- '71664'
- '71667'
- '71671'
- '71671'
- '71675'
- '71675'
- '71675'
- '71676'
- '71678'
- '71678'
- '71679'
- '71684'
- '71691'
- '71691'
- '71691'
- '71693'
- '71697'
- '71698'
- '71698'
- '71699'
- '71701'
- '71701'
- '71702'
- '71704'
- '71705'
- '71707'
- '71721'
- '71721'
- '71725'
- '71729'
- '71730'
- '71732'
- '71733'
- '71736'
- '71737'
- '71740'
- '71744'
- '71744'
- '71745'
- '71754'
- '71755'
- '71756'
- '71756'
- '71759'
- '71762'
- '71763'
- '71763'
- '71763'
- '71764'
- '71764'
- '71766'
- '71767'
- '71767'
- '71768'
- '71769'
- '71769'
- '71773'
- '71775'
- '71775'
- '71782'
- '71784'
- '71785'
- '71786'
- '71787'
- '71788'
- '71792'
- '71793'
- '71793'
- '71794'
- '71796'
- '71796'
- '71797'
- '71797'
- '71799'
- '71799'
- '71802'
- '71808'
- '71809'
- '71810'
- '71812'
- '71816'
- '71820'
- '71822'
- '71823'
- '71823'
- '71823'
- '71823'
- '71825'
- '71826'
- '71826'
- '71828'
- '71833'
- '71835'
- '71839'
- '71847'
- '71847'
- '71849'
- '71852'
- '71855'
- '71855'
- '71857'
- '71857'
- '71860'
- '71868'
- '71868'
- '71868'
- '71868'
- '71869'
- '71869'
- '71869'
- '71873'
- '71875'
- '71879'
- '71880'
- '71882'
- '71898'
- '71907'
- '71907'
- '71907'
- '71908'
- '71908'
- '71909'
- '71909'
- '71909'
- '71910'
- '71911'
- '71915'
- '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
Gender |
---|
<chr> |
male |
SurveyYr | Gender |
---|---|
<chr> | <chr> |
2009_10 | male |
2009_10 | male |
2009_10 | male |
2009_10 | male |
2009_10 | female |
2009_10 | male |
2009_10 | male |
2009_10 | female |
2009_10 | female |
2009_10 | female |
2009_10 | male |
2009_10 | male |
2009_10 | male |
2009_10 | female |
2009_10 | female |
2009_10 | male |
2009_10 | female |
2009_10 | male |
2009_10 | male |
2009_10 | male |
2009_10 | female |
2009_10 | female |
2009_10 | female |
2009_10 | male |
2009_10 | male |
2009_10 | male |
2009_10 | male |
2009_10 | male |
2009_10 | male |
2009_10 | male |
... | ... |
2011_12 | female |
2011_12 | female |
2011_12 | male |
2011_12 | male |
2011_12 | male |
2011_12 | male |
2011_12 | male |
2011_12 | male |
2011_12 | male |
2011_12 | male |
2011_12 | male |
2011_12 | male |
2011_12 | female |
2011_12 | male |
2011_12 | male |
2011_12 | male |
2011_12 | female |
2011_12 | female |
2011_12 | male |
2011_12 | male |
2011_12 | male |
2011_12 | female |
2011_12 | female |
2011_12 | male |
2011_12 | male |
2011_12 | male |
2011_12 | female |
2011_12 | male |
2011_12 | male |
2011_12 | male |
ID | Age_yr | BMI | BP | SurveyYr | Gender |
---|---|---|---|---|---|
<dbl> | <dbl> | <dbl> | <dbl> | <chr> | <chr> |
51624 | 34 | 32.22 | 113 | 2009_10 | male |
51624 | 34 | 32.22 | 113 | 2009_10 | male |
51624 | 34 | 32.22 | 113 | 2009_10 | male |
51625 | 4 | 15.30 | NA | 2009_10 | male |
51630 | 49 | 30.57 | 112 | 2009_10 | female |
51638 | 9 | 16.82 | 86 | 2009_10 | male |
ID | Age_yr | BMI | BP | SurveyYr | Gender |
---|---|---|---|---|---|
<dbl> | <dbl> | <dbl> | <dbl> | <chr> | <chr> |
51624 | 34 | 32.22 | 113 | 2009_10 | male |
51624 | 34 | 32.22 | 113 | 2009_10 | male |
51624 | 34 | 32.22 | 113 | 2009_10 | male |
51625 | 4 | 15.30 | NA | 2009_10 | male |
51630 | 49 | 30.57 | 112 | 2009_10 | female |
51638 | 9 | 16.82 | 86 | 2009_10 | male |
51646 | 8 | 20.64 | 107 | 2009_10 | male |
51647 | 45 | 27.24 | 118 | 2009_10 | female |
51647 | 45 | 27.24 | 118 | 2009_10 | female |
51647 | 45 | 27.24 | 118 | 2009_10 | female |
51654 | 66 | 23.67 | 111 | 2009_10 | male |
51656 | 58 | 23.69 | 104 | 2009_10 | male |
51657 | 54 | 26.03 | 134 | 2009_10 | male |
51659 | 10 | 19.20 | 104 | 2009_10 | female |
51666 | 58 | 26.22 | 127 | 2009_10 | female |
51667 | 50 | 26.60 | 142 | 2009_10 | male |
51671 | 9 | 27.40 | 93 | 2009_10 | female |
51677 | 33 | 28.54 | 128 | 2009_10 | male |
51678 | 60 | 25.84 | 152 | 2009_10 | male |
51679 | 16 | 24.74 | 126 | 2009_10 | male |
51685 | 56 | 19.73 | 95 | 2009_10 | female |
51685 | 56 | 19.73 | 95 | 2009_10 | female |
51691 | 57 | 20.66 | 122 | 2009_10 | female |
51692 | 54 | 36.32 | 90 | 2009_10 | male |
51692 | 54 | 36.32 | 90 | 2009_10 | male |
51694 | 38 | 35.84 | 147 | 2009_10 | male |
51695 | 8 | 24.32 | 93 | 2009_10 | male |
51701 | 36 | 25.95 | 117 | 2009_10 | male |
51702 | 44 | 31.43 | 144 | 2009_10 | male |
51702 | 44 | 31.43 | 144 | 2009_10 | male |
... | ... | ... | ... | ... | ... |
71855 | 62 | 35.9 | 143 | 2011_12 | female |
71855 | 62 | 35.9 | 143 | 2011_12 | female |
71857 | 39 | 23.8 | 118 | 2011_12 | male |
71857 | 39 | 23.8 | 118 | 2011_12 | male |
71860 | 28 | 29.8 | 114 | 2011_12 | male |
71868 | 43 | 28.4 | 112 | 2011_12 | male |
71868 | 43 | 28.4 | 112 | 2011_12 | male |
71868 | 43 | 28.4 | 112 | 2011_12 | male |
71868 | 43 | 28.4 | 112 | 2011_12 | male |
71869 | 69 | 37.8 | 108 | 2011_12 | male |
71869 | 69 | 37.8 | 108 | 2011_12 | male |
71869 | 69 | 37.8 | 108 | 2011_12 | male |
71873 | 20 | 29.3 | 103 | 2011_12 | female |
71875 | 42 | 28.5 | 102 | 2011_12 | male |
71879 | 24 | 22.4 | 129 | 2011_12 | male |
71880 | 46 | 37.5 | 127 | 2011_12 | male |
71882 | 60 | 27.3 | 116 | 2011_12 | female |
71898 | 65 | 29.4 | 151 | 2011_12 | female |
71907 | 80 | 23.2 | 148 | 2011_12 | male |
71907 | 80 | 23.2 | 148 | 2011_12 | male |
71907 | 80 | 23.2 | 148 | 2011_12 | male |
71908 | 66 | 35.1 | 114 | 2011_12 | female |
71908 | 66 | 35.1 | 114 | 2011_12 | female |
71909 | 28 | 29.4 | 124 | 2011_12 | male |
71909 | 28 | 29.4 | 124 | 2011_12 | male |
71909 | 28 | 29.4 | 124 | 2011_12 | male |
71910 | 0 | NA | NA | 2011_12 | female |
71911 | 27 | 31.3 | 133 | 2011_12 | male |
71915 | 60 | 27.5 | 147 | 2011_12 | male |
71915 | 60 | 27.5 | 147 | 2011_12 | male |
This code converts the data type of the ID
column in the nhanes
dataset:
as.character(nhanes$ID)
converts theID
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
ID | Age_yr | BMI | BP | SurveyYr | Gender |
---|---|---|---|---|---|
<chr> | <dbl> | <dbl> | <dbl> | <chr> | <chr> |
51624 | 34 | 32.22 | 113 | 2009_10 | male |
51624 | 34 | 32.22 | 113 | 2009_10 | male |
51624 | 34 | 32.22 | 113 | 2009_10 | male |
51625 | 4 | 15.30 | NA | 2009_10 | male |
51630 | 49 | 30.57 | 112 | 2009_10 | female |
51638 | 9 | 16.82 | 86 | 2009_10 | male |
- 10000
- 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)
- 'tbl_df'
- 'tbl'
- 'data.frame'
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 theGender
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 vectorsummary_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 namedsumary_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 namedYear1
andYear2
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
andYear2
back into a singleSurveyYr
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)
ID | Age_yr | BMI | BP | Year1 | Year2 | Gender |
---|---|---|---|---|---|---|
<chr> | <dbl> | <dbl> | <dbl> | <chr> | <chr> | <chr> |
51624 | 34 | 32.22 | 113 | 2009 | 10 | male |
51624 | 34 | 32.22 | 113 | 2009 | 10 | male |
51624 | 34 | 32.22 | 113 | 2009 | 10 | male |
51625 | 4 | 15.30 | NA | 2009 | 10 | male |
51630 | 49 | 30.57 | 112 | 2009 | 10 | female |
51638 | 9 | 16.82 | 86 | 2009 | 10 | male |
ID | Age_yr | BMI | BP | SurveyYr | Gender |
---|---|---|---|---|---|
<chr> | <dbl> | <dbl> | <dbl> | <chr> | <chr> |
51624 | 34 | 32.22 | 113 | 2009_10 | male |
51624 | 34 | 32.22 | 113 | 2009_10 | male |
51624 | 34 | 32.22 | 113 | 2009_10 | male |
51625 | 4 | 15.30 | NA | 2009_10 | male |
51630 | 49 | 30.57 | 112 | 2009_10 | female |
51638 | 9 | 16.82 | 86 | 2009_10 | male |
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 byduplicated()
, whereTRUE
counts as 1 andFALSE
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"
This code creates datasets with unique rows and examines their contents:
data_uniq <- unique(nhanes)
creates a new dataset by removing duplicate rows fromnhanes
using the base Runique()
function.data_dist <- distinct(nhanes)
creates a new dataset with distinct rows fromnhanes
using thedistinct()
function fromdplyr
. Bothunique()
anddistinct()
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)
ID | Age_yr | BMI | BP | SurveyYr | Gender |
---|---|---|---|---|---|
<chr> | <dbl> | <dbl> | <dbl> | <chr> | <chr> |
51624 | 34 | 32.22 | 113 | 2009_10 | male |
51625 | 4 | 15.30 | NA | 2009_10 | male |
51630 | 49 | 30.57 | 112 | 2009_10 | female |
51638 | 9 | 16.82 | 86 | 2009_10 | male |
51646 | 8 | 20.64 | 107 | 2009_10 | male |
51647 | 45 | 27.24 | 118 | 2009_10 | female |
- 6779
- 6
This code inspects the data_dist
dataset, which contains distinct rows from nhanes
:
head(data_dist)
displays the first six rows of thedata_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 ofdata_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)
ID | Age_yr | BMI | BP | SurveyYr | Gender |
---|---|---|---|---|---|
<chr> | <dbl> | <dbl> | <dbl> | <chr> | <chr> |
51624 | 34 | 32.22 | 113 | 2009_10 | male |
51625 | 4 | 15.30 | NA | 2009_10 | male |
51630 | 49 | 30.57 | 112 | 2009_10 | female |
51638 | 9 | 16.82 | 86 | 2009_10 | male |
51646 | 8 | 20.64 | 107 | 2009_10 | male |
51647 | 45 | 27.24 | 118 | 2009_10 | female |
ID | Age_yr | BMI | BP | SurveyYr | Gender |
---|---|---|---|---|---|
<chr> | <dbl> | <dbl> | <dbl> | <chr> | <chr> |
71907 | 80 | 23.2 | 148 | 2011_12 | male |
71908 | 66 | 35.1 | 114 | 2011_12 | female |
71909 | 28 | 29.4 | 124 | 2011_12 | male |
71910 | 0 | NA | NA | 2011_12 | female |
71911 | 27 | 31.3 | 133 | 2011_12 | male |
71915 | 60 | 27.5 | 147 | 2011_12 | male |
- 6779
- 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 theID
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 ofID
back to"5"
.tail(data_dist)
shows the last six rows of thedata_dist
dataset (note that the substitutions above do not modifydata_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)
- 'subj1624'
- 'subj1625'
- 'subj1630'
- 'subj1638'
- 'subj1646'
- 'subj1647'
- 'subj1654'
- 'subj1656'
- 'subj1657'
- 'subj1659'
- 'subj1666'
- 'subj1667'
- 'subj1671'
- 'subj1677'
- 'subj1678'
- 'subj1679'
- 'subj1685'
- 'subj1691'
- 'subj1692'
- 'subj1694'
- 'subj1695'
- 'subj1701'
- 'subj1702'
- 'subj1707'
- 'subj1710'
- 'subj1711'
- 'subj1715'
- 'subj1718'
- 'subj1719'
- 'subj1720'
- 'subj1722'
- 'subj1723'
- 'subj1724'
- 'subj1731'
- 'subj1732'
- 'subj1734'
- 'subj1741'
- 'subj1743'
- 'subj1745'
- 'subj1748'
- 'subj1752'
- 'subj1753'
- 'subj1754'
- 'subj1755'
- 'subj1758'
- 'subj1760'
- 'subj1761'
- 'subj1764'
- 'subj1765'
- 'subj1767'
- 'subj1768'
- 'subj1771'
- 'subj1772'
- 'subj1774'
- 'subj1776'
- 'subj1780'
- 'subj1781'
- 'subj1788'
- 'subj1789'
- 'subj1790'
- 'subj1794'
- 'subj1799'
- 'subj1801'
- 'subj1803'
- 'subj1804'
- 'subj1809'
- 'subj1810'
- 'subj1813'
- 'subj1814'
- 'subj1819'
- 'subj1828'
- 'subj1829'
- 'subj1832'
- 'subj1840'
- 'subj1845'
- 'subj1846'
- 'subj1849'
- 'subj1851'
- 'subj1856'
- 'subj1857'
- 'subj1861'
- 'subj1862'
- 'subj1863'
- 'subj1868'
- 'subj1875'
- 'subj1888'
- 'subj1892'
- 'subj1893'
- 'subj1896'
- 'subj1898'
- 'subj1899'
- 'subj1905'
- 'subj1906'
- 'subj1907'
- 'subj1910'
- 'subj1911'
- 'subj1912'
- 'subj1921'
- 'subj1928'
- 'subj1933'
- 'subj1943'
- 'subj1944'
- 'subj1945'
- 'subj1951'
- 'subj1952'
- 'subj1954'
- 'subj1958'
- 'subj1959'
- 'subj1961'
- 'subj1962'
- 'subj1963'
- 'subj1964'
- 'subj1966'
- 'subj1970'
- 'subj1971'
- 'subj1973'
- 'subj1974'
- 'subj1975'
- 'subj1976'
- 'subj1979'
- 'subj1982'
- 'subj1983'
- 'subj1984'
- 'subj1985'
- 'subj1991'
- 'subj1996'
- 'subj1997'
- 'subj2004'
- 'subj2009'
- 'subj2013'
- 'subj2016'
- 'subj2017'
- 'subj2019'
- 'subj2020'
- 'subj2022'
- 'subj2023'
- 'subj2027'
- 'subj2030'
- 'subj2031'
- 'subj2037'
- 'subj2038'
- 'subj2043'
- 'subj2044'
- 'subj2050'
- 'subj2054'
- 'subj2060'
- 'subj2063'
- 'subj2066'
- 'subj2067'
- 'subj2068'
- 'subj2069'
- 'subj2075'
- 'subj2080'
- 'subj2081'
- 'subj2083'
- 'subj2085'
- 'subj2088'
- 'subj2089'
- 'subj2090'
- 'subj2093'
- 'subj2094'
- 'subj2099'
- 'subj2101'
- 'subj2102'
- 'subj2104'
- 'subj2106'
- 'subj2107'
- 'subj2114'
- 'subj2115'
- 'subj2119'
- 'subj2120'
- 'subj2121'
- 'subj2122'
- 'subj2128'
- 'subj2131'
- 'subj2134'
- 'subj2135'
- 'subj2145'
- 'subj2148'
- 'subj2149'
- 'subj2151'
- 'subj2152'
- 'subj2154'
- 'subj2156'
- 'subj2157'
- 'subj2159'
- 'subj2160'
- 'subj2163'
- 'subj2168'
- 'subj2177'
- 'subj2179'
- 'subj2185'
- 'subj2187'
- 'subj2189'
- 'subj2192'
- 'subj2193'
- 'subj2194'
- 'subj2197'
- 'subj2202'
- 'subj2204'
- ...
- 'subj71306'
- 'subj71307'
- 'subj71309'
- 'subj71310'
- 'subj71315'
- 'subj71316'
- 'subj71326'
- 'subj71332'
- 'subj71334'
- 'subj71337'
- 'subj71338'
- 'subj71340'
- 'subj71346'
- 'subj71347'
- 'subj71354'
- 'subj71356'
- 'subj71359'
- 'subj71360'
- 'subj71361'
- 'subj71362'
- 'subj71365'
- 'subj71366'
- 'subj71368'
- 'subj71375'
- 'subj71377'
- 'subj71391'
- 'subj71392'
- 'subj71393'
- 'subj71399'
- 'subj71403'
- 'subj71409'
- 'subj71410'
- 'subj71415'
- 'subj71419'
- 'subj71420'
- 'subj71421'
- 'subj71422'
- 'subj71424'
- 'subj71425'
- 'subj71428'
- 'subj71435'
- 'subj71439'
- 'subj71440'
- 'subj71445'
- 'subj71449'
- 'subj71450'
- 'subj71452'
- 'subj71456'
- 'subj71459'
- 'subj71463'
- 'subj71464'
- 'subj71467'
- 'subj71470'
- 'subj71475'
- 'subj71478'
- 'subj71486'
- 'subj71488'
- 'subj71493'
- 'subj71495'
- 'subj71500'
- 'subj71510'
- 'subj71511'
- 'subj71526'
- 'subj71529'
- 'subj71530'
- 'subj71531'
- 'subj71532'
- 'subj71542'
- 'subj71545'
- 'subj71547'
- 'subj71552'
- 'subj71560'
- 'subj71564'
- 'subj71565'
- 'subj71567'
- 'subj71568'
- 'subj71569'
- 'subj71570'
- 'subj71572'
- 'subj71573'
- 'subj71575'
- 'subj71578'
- 'subj71581'
- 'subj71587'
- 'subj71588'
- 'subj71589'
- 'subj71592'
- 'subj71594'
- 'subj71596'
- 'subj71597'
- 'subj71598'
- 'subj71599'
- 'subj71604'
- 'subj71605'
- 'subj71611'
- 'subj71613'
- 'subj71619'
- 'subj71624'
- 'subj71632'
- 'subj71637'
- 'subj71638'
- 'subj71641'
- 'subj71644'
- 'subj71645'
- 'subj71646'
- 'subj71654'
- 'subj71656'
- 'subj71657'
- 'subj71658'
- 'subj71661'
- 'subj71662'
- 'subj71664'
- 'subj71667'
- 'subj71671'
- 'subj71675'
- 'subj71676'
- 'subj71678'
- 'subj71679'
- 'subj71684'
- 'subj71691'
- 'subj71693'
- 'subj71697'
- 'subj71698'
- 'subj71699'
- 'subj71701'
- 'subj71702'
- 'subj71704'
- 'subj71705'
- 'subj71707'
- 'subj71721'
- 'subj71725'
- 'subj71729'
- 'subj71730'
- 'subj71732'
- 'subj71733'
- 'subj71736'
- 'subj71737'
- 'subj71740'
- 'subj71744'
- 'subj71745'
- 'subj71754'
- 'subj71755'
- 'subj71756'
- 'subj71759'
- 'subj71762'
- 'subj71763'
- 'subj71764'
- 'subj71766'
- 'subj71767'
- 'subj71768'
- 'subj71769'
- 'subj71773'
- 'subj71775'
- 'subj71782'
- 'subj71784'
- 'subj71785'
- 'subj71786'
- 'subj71787'
- 'subj71788'
- 'subj71792'
- 'subj71793'
- 'subj71794'
- 'subj71796'
- 'subj71797'
- 'subj71799'
- 'subj71802'
- 'subj71808'
- 'subj71809'
- 'subj71810'
- 'subj71812'
- 'subj71816'
- 'subj71820'
- 'subj71822'
- 'subj71823'
- 'subj71825'
- 'subj71826'
- 'subj71828'
- 'subj71833'
- 'subj71835'
- 'subj71839'
- 'subj71847'
- 'subj71849'
- 'subj71852'
- 'subj71855'
- 'subj71857'
- 'subj71860'
- 'subj71868'
- 'subj71869'
- 'subj71873'
- 'subj71875'
- 'subj71879'
- 'subj71880'
- 'subj71882'
- 'subj71898'
- 'subj71907'
- 'subj71908'
- 'subj71909'
- 'subj71910'
- 'subj71911'
- 'subj71915'
- '51624'
- '51625'
- '51630'
- '51638'
- '51646'
- '51647'
- '51654'
- '51656'
- '51657'
- '51659'
- '51666'
- '51667'
- '51671'
- '51677'
- '51678'
- '51679'
- '51685'
- '51691'
- '51692'
- '51694'
- '51695'
- '51701'
- '51702'
- '51707'
- '51710'
- '51711'
- '51715'
- '51718'
- '51719'
- '51720'
- '51722'
- '51723'
- '51724'
- '51731'
- '51732'
- '51734'
- '51741'
- '51743'
- '51745'
- '51748'
- '51752'
- '51753'
- '51754'
- '51755'
- '51758'
- '51760'
- '51761'
- '51764'
- '51765'
- '51767'
- '51768'
- '51771'
- '51772'
- '51774'
- '51776'
- '51780'
- '51781'
- '51788'
- '51789'
- '51790'
- '51794'
- '51799'
- '51801'
- '51803'
- '51804'
- '51809'
- '51810'
- '51813'
- '51814'
- '51819'
- '51828'
- '51829'
- '51832'
- '51840'
- '51845'
- '51846'
- '51849'
- '51851'
- '51856'
- '51857'
- '51861'
- '51862'
- '51863'
- '51868'
- '51875'
- '51888'
- '51892'
- '51893'
- '51896'
- '51898'
- '51899'
- '51905'
- '51906'
- '51907'
- '51910'
- '51911'
- '51912'
- '51921'
- '51928'
- '51933'
- '51943'
- '51944'
- '51945'
- '51951'
- '51952'
- '51954'
- '51958'
- '51959'
- '51961'
- '51962'
- '51963'
- '51964'
- '51966'
- '51970'
- '51971'
- '51973'
- '51974'
- '51975'
- '51976'
- '51979'
- '51982'
- '51983'
- '51984'
- '51985'
- '51991'
- '51996'
- '51997'
- '52004'
- '52009'
- '52013'
- '52016'
- '52017'
- '52019'
- '52020'
- '52022'
- '52023'
- '52027'
- '52030'
- '52031'
- '52037'
- '52038'
- '52043'
- '52044'
- '52050'
- '52054'
- '52060'
- '52063'
- '52066'
- '52067'
- '52068'
- '52069'
- '52075'
- '52080'
- '52081'
- '52083'
- '52085'
- '52088'
- '52089'
- '52090'
- '52093'
- '52094'
- '52099'
- '52101'
- '52102'
- '52104'
- '52106'
- '52107'
- '52114'
- '52115'
- '52119'
- '52120'
- '52121'
- '52122'
- '52128'
- '52131'
- '52134'
- '52135'
- '52145'
- '52148'
- '52149'
- '52151'
- '52152'
- '52154'
- '52156'
- '52157'
- '52159'
- '52160'
- '52163'
- '52168'
- '52177'
- '52179'
- '52185'
- '52187'
- '52189'
- '52192'
- '52193'
- '52194'
- '52197'
- '52202'
- '52204'
- ...
- '71306'
- '71307'
- '71309'
- '71310'
- '71315'
- '71316'
- '71326'
- '71332'
- '71334'
- '71337'
- '71338'
- '71340'
- '71346'
- '71347'
- '71354'
- '71356'
- '71359'
- '71360'
- '71361'
- '71362'
- '71365'
- '71366'
- '71368'
- '71375'
- '71377'
- '71391'
- '71392'
- '71393'
- '71399'
- '71403'
- '71409'
- '71410'
- '71415'
- '71419'
- '71420'
- '71421'
- '71422'
- '71424'
- '71425'
- '71428'
- '71435'
- '71439'
- '71440'
- '71445'
- '71449'
- '71450'
- '71452'
- '71456'
- '71459'
- '71463'
- '71464'
- '71467'
- '71470'
- '71475'
- '71478'
- '71486'
- '71488'
- '71493'
- '71495'
- '71500'
- '71510'
- '71511'
- '71526'
- '71529'
- '71530'
- '71531'
- '71532'
- '71542'
- '71545'
- '71547'
- '71552'
- '71560'
- '71564'
- '71565'
- '71567'
- '71568'
- '71569'
- '71570'
- '71572'
- '71573'
- '71575'
- '71578'
- '71581'
- '71587'
- '71588'
- '71589'
- '71592'
- '71594'
- '71596'
- '71597'
- '71598'
- '71599'
- '71604'
- '71605'
- '71611'
- '71613'
- '71619'
- '71624'
- '71632'
- '71637'
- '71638'
- '71641'
- '71644'
- '71645'
- '71646'
- '71654'
- '71656'
- '71657'
- '71658'
- '71661'
- '71662'
- '71664'
- '71667'
- '71671'
- '71675'
- '71676'
- '71678'
- '71679'
- '71684'
- '71691'
- '71693'
- '71697'
- '71698'
- '71699'
- '71701'
- '71702'
- '71704'
- '71705'
- '71707'
- '71721'
- '71725'
- '71729'
- '71730'
- '71732'
- '71733'
- '71736'
- '71737'
- '71740'
- '71744'
- '71745'
- '71754'
- '71755'
- '71756'
- '71759'
- '71762'
- '71763'
- '71764'
- '71766'
- '71767'
- '71768'
- '71769'
- '71773'
- '71775'
- '71782'
- '71784'
- '71785'
- '71786'
- '71787'
- '71788'
- '71792'
- '71793'
- '71794'
- '71796'
- '71797'
- '71799'
- '71802'
- '71808'
- '71809'
- '71810'
- '71812'
- '71816'
- '71820'
- '71822'
- '71823'
- '71825'
- '71826'
- '71828'
- '71833'
- '71835'
- '71839'
- '71847'
- '71849'
- '71852'
- '71855'
- '71857'
- '71860'
- '71868'
- '71869'
- '71873'
- '71875'
- '71879'
- '71880'
- '71882'
- '71898'
- '71907'
- '71908'
- '71909'
- '71910'
- '71911'
- '71915'
ID | Age_yr | BMI | BP | SurveyYr | Gender |
---|---|---|---|---|---|
<chr> | <dbl> | <dbl> | <dbl> | <chr> | <chr> |
71907 | 80 | 23.2 | 148 | 2011_12 | male |
71908 | 66 | 35.1 | 114 | 2011_12 | female |
71909 | 28 | 29.4 | 124 | 2011_12 | male |
71910 | 0 | NA | NA | 2011_12 | female |
71911 | 27 | 31.3 | 133 | 2011_12 | male |
71915 | 60 | 27.5 | 147 | 2011_12 | male |
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 theAge_yr
column equals 34 and theGender
column equals'male'
. This uses thefilter()
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)
ID | Age_yr | BMI | BP | SurveyYr | Gender |
---|---|---|---|---|---|
<chr> | <dbl> | <dbl> | <dbl> | <chr> | <chr> |
51624 | 34 | 32.22 | 113 | 2009_10 | male |
52789 | 34 | 22.31 | 107 | 2009_10 | male |
54123 | 34 | 26.96 | 104 | 2009_10 | male |
54148 | 34 | 28.69 | 124 | 2009_10 | male |
54564 | 34 | 28.70 | 116 | 2009_10 | male |
54636 | 34 | 20.45 | 106 | 2009_10 | male |
56089 | 34 | 40.68 | 124 | 2009_10 | male |
56624 | 34 | 28.59 | 120 | 2009_10 | male |
57024 | 34 | 31.06 | 123 | 2009_10 | male |
57184 | 34 | 31.23 | 124 | 2009_10 | male |
57244 | 34 | 25.36 | 115 | 2009_10 | male |
57290 | 34 | 27.28 | 125 | 2009_10 | male |
57481 | 34 | 26.06 | 129 | 2009_10 | male |
58261 | 34 | 32.76 | 118 | 2009_10 | male |
58558 | 34 | 24.15 | 124 | 2009_10 | male |
58706 | 34 | 25.82 | 129 | 2009_10 | male |
60186 | 34 | 25.37 | 118 | 2009_10 | male |
61545 | 34 | 23.09 | 115 | 2009_10 | male |
63849 | 34 | 30.10 | 121 | 2011_12 | male |
65773 | 34 | 49.70 | 138 | 2011_12 | male |
65946 | 34 | 22.50 | 102 | 2011_12 | male |
66061 | 34 | 24.30 | 124 | 2011_12 | male |
66505 | 34 | 23.00 | 115 | 2011_12 | male |
66591 | 34 | 35.00 | 120 | 2011_12 | male |
66933 | 34 | 21.10 | 114 | 2011_12 | male |
67490 | 34 | 27.20 | 107 | 2011_12 | male |
67893 | 34 | 26.70 | 122 | 2011_12 | male |
68021 | 34 | 23.70 | 107 | 2011_12 | male |
68592 | 34 | 24.60 | 127 | 2011_12 | male |
70161 | 34 | 44.90 | 98 | 2011_12 | male |
70162 | 34 | 30.50 | 147 | 2011_12 | male |
70485 | 34 | 20.60 | 102 | 2011_12 | male |
70548 | 34 | 24.50 | 114 | 2011_12 | male |
71079 | 34 | 22.30 | 116 | 2011_12 | male |
71146 | 34 | 23.60 | 121 | 2011_12 | male |
71792 | 34 | 25.60 | 103 | 2011_12 | male |
- 36
- 6
This code creates a subset of data_dist
with male individuals whose age falls within a specified range:
The pipe operator
%>%
passesdata_dist
into thefilter()
function.filter(between(Age_yr, 34, 40), Gender == 'male')
selects rows where:Age_yr
is between 34 and 40 (inclusive), using thebetween()
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
ID | Age_yr | BMI | BP | SurveyYr | Gender |
---|---|---|---|---|---|
<chr> | <dbl> | <dbl> | <dbl> | <chr> | <chr> |
51624 | 34 | 32.22 | 113 | 2009_10 | male |
51694 | 38 | 35.84 | 147 | 2009_10 | male |
51701 | 36 | 25.95 | 117 | 2009_10 | male |
51832 | 38 | 25.91 | 118 | 2009_10 | male |
51991 | 35 | 28.82 | 121 | 2009_10 | male |
52013 | 36 | 28.09 | 102 | 2009_10 | male |
52050 | 39 | 32.70 | 127 | 2009_10 | male |
52179 | 40 | 35.45 | 117 | 2009_10 | male |
52197 | 39 | 40.66 | 140 | 2009_10 | male |
52214 | 38 | 26.66 | 125 | 2009_10 | male |
52395 | 35 | 31.52 | NA | 2009_10 | male |
52501 | 38 | 24.79 | 136 | 2009_10 | male |
52538 | 37 | 30.92 | 140 | 2009_10 | male |
52584 | 39 | 26.14 | 121 | 2009_10 | male |
52621 | 35 | 32.75 | 126 | 2009_10 | male |
52648 | 39 | 29.86 | 127 | 2009_10 | male |
52789 | 34 | 22.31 | 107 | 2009_10 | male |
52948 | 36 | 32.53 | NA | 2009_10 | male |
52975 | 37 | 21.96 | 106 | 2009_10 | male |
52980 | 38 | 30.90 | 119 | 2009_10 | male |
53127 | 39 | 32.65 | 143 | 2009_10 | male |
53221 | 39 | 30.40 | 125 | 2009_10 | male |
53325 | 37 | 36.26 | 149 | 2009_10 | male |
53418 | 39 | 41.49 | 124 | 2009_10 | male |
53476 | 35 | 28.98 | 114 | 2009_10 | male |
53569 | 40 | 39.16 | 118 | 2009_10 | male |
53621 | 40 | 26.39 | 103 | 2009_10 | male |
53672 | 36 | 31.70 | 117 | 2009_10 | male |
53702 | 38 | 24.27 | 125 | 2009_10 | male |
53742 | 38 | 22.85 | 113 | 2009_10 | male |
... | ... | ... | ... | ... | ... |
70161 | 34 | 44.9 | 98 | 2011_12 | male |
70162 | 34 | 30.5 | 147 | 2011_12 | male |
70196 | 37 | 30.9 | 95 | 2011_12 | male |
70213 | 35 | 28.2 | 124 | 2011_12 | male |
70485 | 34 | 20.6 | 102 | 2011_12 | male |
70535 | 40 | 26.3 | 130 | 2011_12 | male |
70548 | 34 | 24.5 | 114 | 2011_12 | male |
70551 | 37 | 28.3 | 125 | 2011_12 | male |
70757 | 36 | 21.7 | 118 | 2011_12 | male |
70851 | 36 | 22.9 | 112 | 2011_12 | male |
70869 | 38 | 35.4 | 109 | 2011_12 | male |
70973 | 39 | 22.4 | 121 | 2011_12 | male |
71079 | 34 | 22.3 | 116 | 2011_12 | male |
71119 | 36 | 25.2 | 117 | 2011_12 | male |
71146 | 34 | 23.6 | 121 | 2011_12 | male |
71158 | 39 | 22.3 | 106 | 2011_12 | male |
71183 | 38 | 22.6 | 110 | 2011_12 | male |
71279 | 40 | 25.1 | 147 | 2011_12 | male |
71368 | 35 | 20.6 | 131 | 2011_12 | male |
71415 | 38 | 27.3 | NA | 2011_12 | male |
71428 | 35 | 45.3 | 111 | 2011_12 | male |
71452 | 36 | 25.0 | NA | 2011_12 | male |
71531 | 35 | 22.4 | 143 | 2011_12 | male |
71567 | 35 | 26.9 | 120 | 2011_12 | male |
71581 | 36 | 38.7 | 127 | 2011_12 | male |
71763 | 40 | 20.9 | 121 | 2011_12 | male |
71767 | 38 | 26.6 | 116 | 2011_12 | male |
71792 | 34 | 25.6 | 103 | 2011_12 | male |
71847 | 37 | 26.0 | 116 | 2011_12 | male |
71857 | 39 | 23.8 | 118 | 2011_12 | male |
This code filters the data_dist
dataset to select male individuals older than 50:
The pipe operator
%>%
passesdata_dist
intofilter()
.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
ID | Age_yr | BMI | BP | SurveyYr | Gender |
---|---|---|---|---|---|
<chr> | <dbl> | <dbl> | <dbl> | <chr> | <chr> |
51654 | 66 | 23.67 | 111 | 2009_10 | male |
51656 | 58 | 23.69 | 104 | 2009_10 | male |
51657 | 54 | 26.03 | 134 | 2009_10 | male |
51678 | 60 | 25.84 | 152 | 2009_10 | male |
51692 | 54 | 36.32 | 90 | 2009_10 | male |
51748 | 56 | 24.98 | 86 | 2009_10 | male |
51803 | 58 | 29.27 | 139 | 2009_10 | male |
51804 | 80 | 17.87 | 132 | 2009_10 | male |
51819 | 80 | 34.04 | 125 | 2009_10 | male |
51861 | 80 | 29.34 | 149 | 2009_10 | male |
51888 | 63 | 27.46 | 127 | 2009_10 | male |
51921 | 55 | 26.97 | 181 | 2009_10 | male |
51933 | 54 | 35.82 | 191 | 2009_10 | male |
51975 | 57 | 31.88 | 127 | 2009_10 | male |
51976 | 79 | 27.78 | 146 | 2009_10 | male |
52023 | 65 | 31.28 | 130 | 2009_10 | male |
52027 | 55 | 22.81 | 134 | 2009_10 | male |
52031 | 77 | 30.34 | 142 | 2009_10 | male |
52043 | 62 | 28.97 | 110 | 2009_10 | male |
52068 | 72 | 28.15 | 106 | 2009_10 | male |
52081 | 65 | 31.77 | 126 | 2009_10 | male |
52099 | 56 | 30.27 | 133 | 2009_10 | male |
52122 | 67 | 32.35 | 140 | 2009_10 | male |
52134 | 61 | 48.22 | 110 | 2009_10 | male |
52135 | 74 | 32.93 | 133 | 2009_10 | male |
52152 | 70 | 28.64 | 118 | 2009_10 | male |
52168 | 73 | 23.52 | 178 | 2009_10 | male |
52192 | 73 | 26.39 | 134 | 2009_10 | male |
52193 | 55 | 29.86 | 116 | 2009_10 | male |
52221 | 65 | 22.01 | 114 | 2009_10 | male |
... | ... | ... | ... | ... | ... |
71377 | 80 | 22.1 | NA | 2011_12 | male |
71399 | 55 | 21.6 | 110 | 2011_12 | male |
71511 | 64 | 27.5 | 116 | 2011_12 | male |
71530 | 68 | 26.7 | 138 | 2011_12 | male |
71552 | 65 | 22.8 | 159 | 2011_12 | male |
71560 | 80 | 27.1 | 145 | 2011_12 | male |
71569 | 56 | 29.0 | 147 | 2011_12 | male |
71599 | 59 | 30.5 | 145 | 2011_12 | male |
71613 | 75 | 23.9 | 174 | 2011_12 | male |
71619 | 55 | 22.6 | 122 | 2011_12 | male |
71656 | 58 | 23.8 | 114 | 2011_12 | male |
71662 | 74 | 29.8 | 139 | 2011_12 | male |
71671 | 65 | 22.6 | 128 | 2011_12 | male |
71676 | 80 | 27.0 | 120 | 2011_12 | male |
71697 | 74 | 28.6 | 143 | 2011_12 | male |
71704 | 77 | 28.1 | 135 | 2011_12 | male |
71705 | 67 | 38.5 | 122 | 2011_12 | male |
71732 | 63 | 30.3 | 123 | 2011_12 | male |
71733 | 80 | 31.7 | 139 | 2011_12 | male |
71736 | 74 | 26.4 | 105 | 2011_12 | male |
71756 | 63 | 23.7 | 131 | 2011_12 | male |
71773 | 53 | 28.0 | 86 | 2011_12 | male |
71775 | 62 | 40.7 | 109 | 2011_12 | male |
71785 | 64 | 28.4 | 138 | 2011_12 | male |
71797 | 80 | NA | 153 | 2011_12 | male |
71799 | 59 | 22.5 | 147 | 2011_12 | male |
71802 | 53 | 31.3 | 139 | 2011_12 | male |
71869 | 69 | 37.8 | 108 | 2011_12 | male |
71907 | 80 | 23.2 | 148 | 2011_12 | male |
71915 | 60 | 27.5 | 147 | 2011_12 | male |
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 ofNA
values usingsum(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 (NA
s) in the data_dist
dataset and then checks the number of remaining missing values:
impData_mean <- data_dist
creates a copy ofdata_dist
calledimpData_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
NA
s in theBP
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 manyNA
s remain in the imputedBP
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 thedata_dist
dataset namedimpData_zero
.impData_zero$BP[is.na(impData_zero$BP)] <- 0
replaces all missing (NA
) values in theBP
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)
ID | Age_yr | BMI | BP | SurveyYr | Gender |
---|---|---|---|---|---|
<chr> | <dbl> | <dbl> | <dbl> | <chr> | <chr> |
51624 | 34 | 32.22 | 113 | 2009_10 | male |
51625 | 4 | 15.30 | 0 | 2009_10 | male |
51630 | 49 | 30.57 | 112 | 2009_10 | female |
51638 | 9 | 16.82 | 86 | 2009_10 | male |
51646 | 8 | 20.64 | 107 | 2009_10 | male |
51647 | 45 | 27.24 | 118 | 2009_10 | female |
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 ofdata_dist
nameddataNo_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 thedrop_na()
function fromtidyr
to remove any rows where theBP
column hasNA
.The pipe
%>%
passesdata_dist
intodrop_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))
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
, andBP
.
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
- 40.2992140050018
- 27.5776098606645
- 117.966059306895
- 40.2992140050018
- 27.5776098606645
- 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 theGender
column usinggroup_by()
.Calculates the mean for
Age_yr
,BP
, andBMI
within each gender group usingsummarise()
..groups = 'drop'
ensures that the result is returned as a regular (ungrouped) data frame.
The results are saved to
dataGrp.gender
, which contains the averageAge_yr
,BP
, andBMI
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 bothGender
andSurveyYr
usinggroup_by()
.Within each group (combination of gender and year), calculates:
mean_age
: Mean ofAge_yr
.mean_BP
: Mean ofBP
.mean_BMI
: Mean ofBMI
.
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
andSurveyYr
.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.