This is an trial to explore Titanic dataset on Kaggle

因為不熟feature engineering,所以這次作業參考兩個來源:

exploring-survival-on-the-titanic

titanic-passenger-survival-forecast-r

load the package needed

library(tidyverse)
options(stringsAsFactors = F)

step1: to load and clean data initially

# Load data
Train <- read_csv("train.csv", col_names = T)
Target <- read_csv("test.csv", col_names = T)
# Browse data
class(Train)
## [1] "tbl_df"     "tbl"        "data.frame"
class(Target)
## [1] "tbl_df"     "tbl"        "data.frame"
str(Train)
## Classes 'tbl_df', 'tbl' and 'data.frame':    891 obs. of  12 variables:
##  $ PassengerId: int  1 2 3 4 5 6 7 8 9 10 ...
##  $ Survived   : int  0 1 1 1 0 0 0 0 1 1 ...
##  $ Pclass     : int  3 1 3 1 3 3 1 3 3 2 ...
##  $ Name       : chr  "Braund, Mr. Owen Harris" "Cumings, Mrs. John Bradley (Florence Briggs Thayer)" "Heikkinen, Miss. Laina" "Futrelle, Mrs. Jacques Heath (Lily May Peel)" ...
##  $ Sex        : chr  "male" "female" "female" "female" ...
##  $ Age        : num  22 38 26 35 35 NA 54 2 27 14 ...
##  $ SibSp      : int  1 1 0 1 0 0 0 3 0 1 ...
##  $ Parch      : int  0 0 0 0 0 0 0 1 2 0 ...
##  $ Ticket     : chr  "A/5 21171" "PC 17599" "STON/O2. 3101282" "113803" ...
##  $ Fare       : num  7.25 71.28 7.92 53.1 8.05 ...
##  $ Cabin      : chr  NA "C85" NA "C123" ...
##  $ Embarked   : chr  "S" "C" "S" "S" ...
##  - attr(*, "spec")=List of 2
##   ..$ cols   :List of 12
##   .. ..$ PassengerId: list()
##   .. .. ..- attr(*, "class")= chr  "collector_integer" "collector"
##   .. ..$ Survived   : list()
##   .. .. ..- attr(*, "class")= chr  "collector_integer" "collector"
##   .. ..$ Pclass     : list()
##   .. .. ..- attr(*, "class")= chr  "collector_integer" "collector"
##   .. ..$ Name       : list()
##   .. .. ..- attr(*, "class")= chr  "collector_character" "collector"
##   .. ..$ Sex        : list()
##   .. .. ..- attr(*, "class")= chr  "collector_character" "collector"
##   .. ..$ Age        : list()
##   .. .. ..- attr(*, "class")= chr  "collector_double" "collector"
##   .. ..$ SibSp      : list()
##   .. .. ..- attr(*, "class")= chr  "collector_integer" "collector"
##   .. ..$ Parch      : list()
##   .. .. ..- attr(*, "class")= chr  "collector_integer" "collector"
##   .. ..$ Ticket     : list()
##   .. .. ..- attr(*, "class")= chr  "collector_character" "collector"
##   .. ..$ Fare       : list()
##   .. .. ..- attr(*, "class")= chr  "collector_double" "collector"
##   .. ..$ Cabin      : list()
##   .. .. ..- attr(*, "class")= chr  "collector_character" "collector"
##   .. ..$ Embarked   : list()
##   .. .. ..- attr(*, "class")= chr  "collector_character" "collector"
##   ..$ default: list()
##   .. ..- attr(*, "class")= chr  "collector_guess" "collector"
##   ..- attr(*, "class")= chr "col_spec"
str(Target)
## Classes 'tbl_df', 'tbl' and 'data.frame':    418 obs. of  11 variables:
##  $ PassengerId: int  892 893 894 895 896 897 898 899 900 901 ...
##  $ Pclass     : int  3 3 2 3 3 3 3 2 3 3 ...
##  $ Name       : chr  "Kelly, Mr. James" "Wilkes, Mrs. James (Ellen Needs)" "Myles, Mr. Thomas Francis" "Wirz, Mr. Albert" ...
##  $ Sex        : chr  "male" "female" "male" "male" ...
##  $ Age        : num  34.5 47 62 27 22 14 30 26 18 21 ...
##  $ SibSp      : int  0 1 0 0 1 0 0 1 0 2 ...
##  $ Parch      : int  0 0 0 0 1 0 0 1 0 0 ...
##  $ Ticket     : chr  "330911" "363272" "240276" "315154" ...
##  $ Fare       : num  7.83 7 9.69 8.66 12.29 ...
##  $ Cabin      : chr  NA NA NA NA ...
##  $ Embarked   : chr  "Q" "S" "Q" "S" ...
##  - attr(*, "spec")=List of 2
##   ..$ cols   :List of 11
##   .. ..$ PassengerId: list()
##   .. .. ..- attr(*, "class")= chr  "collector_integer" "collector"
##   .. ..$ Pclass     : list()
##   .. .. ..- attr(*, "class")= chr  "collector_integer" "collector"
##   .. ..$ Name       : list()
##   .. .. ..- attr(*, "class")= chr  "collector_character" "collector"
##   .. ..$ Sex        : list()
##   .. .. ..- attr(*, "class")= chr  "collector_character" "collector"
##   .. ..$ Age        : list()
##   .. .. ..- attr(*, "class")= chr  "collector_double" "collector"
##   .. ..$ SibSp      : list()
##   .. .. ..- attr(*, "class")= chr  "collector_integer" "collector"
##   .. ..$ Parch      : list()
##   .. .. ..- attr(*, "class")= chr  "collector_integer" "collector"
##   .. ..$ Ticket     : list()
##   .. .. ..- attr(*, "class")= chr  "collector_character" "collector"
##   .. ..$ Fare       : list()
##   .. .. ..- attr(*, "class")= chr  "collector_double" "collector"
##   .. ..$ Cabin      : list()
##   .. .. ..- attr(*, "class")= chr  "collector_character" "collector"
##   .. ..$ Embarked   : list()
##   .. .. ..- attr(*, "class")= chr  "collector_character" "collector"
##   ..$ default: list()
##   .. ..- attr(*, "class")= chr  "collector_guess" "collector"
##   ..- attr(*, "class")= chr "col_spec"
colnames(Train)
##  [1] "PassengerId" "Survived"    "Pclass"      "Name"        "Sex"        
##  [6] "Age"         "SibSp"       "Parch"       "Ticket"      "Fare"       
## [11] "Cabin"       "Embarked"
colnames(Target)
##  [1] "PassengerId" "Pclass"      "Name"        "Sex"         "Age"        
##  [6] "SibSp"       "Parch"       "Ticket"      "Fare"        "Cabin"      
## [11] "Embarked"
# Bind data and remove useless columns
#Target$Survived <- NA
Full <- full_join(Train, Target)
glimpse(Full)
## Observations: 1,309
## Variables: 12
## $ PassengerId <int> 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,...
## $ Survived    <int> 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0,...
## $ Pclass      <int> 3, 1, 3, 1, 3, 3, 1, 3, 3, 2, 3, 1, 3, 3, 3, 2, 3,...
## $ Name        <chr> "Braund, Mr. Owen Harris", "Cumings, Mrs. John Bra...
## $ Sex         <chr> "male", "female", "female", "female", "male", "mal...
## $ Age         <dbl> 22, 38, 26, 35, 35, NA, 54, 2, 27, 14, 4, 58, 20, ...
## $ SibSp       <int> 1, 1, 0, 1, 0, 0, 0, 3, 0, 1, 1, 0, 0, 1, 0, 0, 4,...
## $ Parch       <int> 0, 0, 0, 0, 0, 0, 0, 1, 2, 0, 1, 0, 0, 5, 0, 0, 1,...
## $ Ticket      <chr> "A/5 21171", "PC 17599", "STON/O2. 3101282", "1138...
## $ Fare        <dbl> 7.2500, 71.2833, 7.9250, 53.1000, 8.0500, 8.4583, ...
## $ Cabin       <chr> NA, "C85", NA, "C123", NA, NA, "E46", NA, NA, NA, ...
## $ Embarked    <chr> "S", "C", "S", "S", "S", "Q", "S", "S", "S", "C", ...
Full <- Full[, -(1:2)]
glimpse(Full)
## Observations: 1,309
## Variables: 10
## $ Pclass   <int> 3, 1, 3, 1, 3, 3, 1, 3, 3, 2, 3, 1, 3, 3, 3, 2, 3, 2,...
## $ Name     <chr> "Braund, Mr. Owen Harris", "Cumings, Mrs. John Bradle...
## $ Sex      <chr> "male", "female", "female", "female", "male", "male",...
## $ Age      <dbl> 22, 38, 26, 35, 35, NA, 54, 2, 27, 14, 4, 58, 20, 39,...
## $ SibSp    <int> 1, 1, 0, 1, 0, 0, 0, 3, 0, 1, 1, 0, 0, 1, 0, 0, 4, 0,...
## $ Parch    <int> 0, 0, 0, 0, 0, 0, 0, 1, 2, 0, 1, 0, 0, 5, 0, 0, 1, 0,...
## $ Ticket   <chr> "A/5 21171", "PC 17599", "STON/O2. 3101282", "113803"...
## $ Fare     <dbl> 7.2500, 71.2833, 7.9250, 53.1000, 8.0500, 8.4583, 51....
## $ Cabin    <chr> NA, "C85", NA, "C123", NA, NA, "E46", NA, NA, NA, "G6...
## $ Embarked <chr> "S", "C", "S", "S", "S", "Q", "S", "S", "S", "C", "S"...
# adjust data type
Full$Pclass <- factor(Full$Pclass)
Full$Sex <- factor(Full$Sex)
Full$Embarked <- factor(Full$Embarked)
# Checking NA
NAoutput <- map_df(Full, function(x) sum(is.na(x)))
#sapply(Full, function(x) sum(is.na(x)))
glimpse(NAoutput)
## Observations: 1
## Variables: 10
## $ Pclass   <int> 0
## $ Name     <int> 0
## $ Sex      <int> 0
## $ Age      <int> 263
## $ SibSp    <int> 0
## $ Parch    <int> 0
## $ Ticket   <int> 0
## $ Fare     <int> 1
## $ Cabin    <int> 1014
## $ Embarked <int> 2

step2: to deal with NA: Fare

#Age, Fare, Cabin, Embarked need further processing
# Checking Fare
Fare_miss <- which(is.na(Full$Fare))
glimpse(Full[Fare_miss, ])
## Observations: 1
## Variables: 10
## $ Pclass   <fct> 3
## $ Name     <chr> "Storey, Mr. Thomas"
## $ Sex      <fct> male
## $ Age      <dbl> 60.5
## $ SibSp    <int> 0
## $ Parch    <int> 0
## $ Ticket   <chr> "3701"
## $ Fare     <dbl> NA
## $ Cabin    <chr> NA
## $ Embarked <fct> S
summary(Full$Fare)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max.    NA's 
##   0.000   7.896  14.454  33.295  31.275 512.329       1
# Sex & Pclass
Full %>% filter(Sex == "male", Pclass == 3) %>%
  ggplot(aes(x = Fare)) + 
  geom_bar(stat = "bin", bins = 15)

Full %>% filter(Sex == "male", Pclass == 3) %>%
  summarize(median = median(Fare, na.rm = T))
## # A tibble: 1 x 1
##   median
##    <dbl>
## 1   7.90
Full %>% filter(Sex == "male", Pclass == 3) %>% count()
## # A tibble: 1 x 1
##       n
##   <int>
## 1   493
# Check Age
Full %>% filter(Sex == "male", Pclass == 3) %>%
  ggplot(aes(x = Age)) +
  geom_bar(stat = "bin", bins = 30)

# Sex & Pclass & Age
Full %>% filter(Sex == "male", Pclass == 3, Age >= 45) %>%
  ggplot(aes(x = Fare)) +
  geom_bar(stat = "bin", bins = 30)

Full %>% filter(Sex == "male", Pclass == 3, Age >= 45) %>%
  summarize(median = median(Fare, na.rm = T))
## # A tibble: 1 x 1
##   median
##    <dbl>
## 1   7.75
Full %>% filter(Sex == "male", Pclass == 3, Age >= 45) %>% count()
## # A tibble: 1 x 1
##       n
##   <int>
## 1    19
Full$Fare[Fare_miss] <- 7.9

step3: to deal with NA: Embarked

# Checking Embarked
glimpse(Full)
## Observations: 1,309
## Variables: 10
## $ Pclass   <fct> 3, 1, 3, 1, 3, 3, 1, 3, 3, 2, 3, 1, 3, 3, 3, 2, 3, 2,...
## $ Name     <chr> "Braund, Mr. Owen Harris", "Cumings, Mrs. John Bradle...
## $ Sex      <fct> male, female, female, female, male, male, male, male,...
## $ Age      <dbl> 22, 38, 26, 35, 35, NA, 54, 2, 27, 14, 4, 58, 20, 39,...
## $ SibSp    <int> 1, 1, 0, 1, 0, 0, 0, 3, 0, 1, 1, 0, 0, 1, 0, 0, 4, 0,...
## $ Parch    <int> 0, 0, 0, 0, 0, 0, 0, 1, 2, 0, 1, 0, 0, 5, 0, 0, 1, 0,...
## $ Ticket   <chr> "A/5 21171", "PC 17599", "STON/O2. 3101282", "113803"...
## $ Fare     <dbl> 7.2500, 71.2833, 7.9250, 53.1000, 8.0500, 8.4583, 51....
## $ Cabin    <chr> NA, "C85", NA, "C123", NA, NA, "E46", NA, NA, NA, "G6...
## $ Embarked <fct> S, C, S, S, S, Q, S, S, S, C, S, S, S, S, S, S, Q, S,...
Embarked_miss <- which(is.na(Full$Embarked))
glimpse(Full[Embarked_miss, ])
## Observations: 2
## Variables: 10
## $ Pclass   <fct> 1, 1
## $ Name     <chr> "Icard, Miss. Amelie", "Stone, Mrs. George Nelson (Ma...
## $ Sex      <fct> female, female
## $ Age      <dbl> 38, 62
## $ SibSp    <int> 0, 0
## $ Parch    <int> 0, 0
## $ Ticket   <chr> "113572", "113572"
## $ Fare     <dbl> 80, 80
## $ Cabin    <chr> "B28", "B28"
## $ Embarked <fct> NA, NA
glimpse(Full$Embarked)
##  Factor w/ 3 levels "C","Q","S": 3 1 3 3 3 2 3 3 3 1 ...
Full %>% filter(Sex == "female", Pclass == 1, Fare == 80)  %>% count() 
## # A tibble: 1 x 1
##       n
##   <int>
## 1     2
# Sex & Pclass
Full %>% filter(Sex == "female", Pclass == 1) %>%
  ggplot(aes(x = Embarked)) + 
  geom_bar(width = 0.3)

Full %>% filter(Sex == "female", Pclass == 1) %>%
  ggplot(aes(x = Age, y = Fare)) + 
  geom_point(aes(colour = Embarked))

Full %>% filter(Sex == "female", Pclass == 1) %>%
  ggplot(aes(x = Embarked, y = Fare)) + 
  geom_point()

Full %>% filter(Sex == "female", Pclass == 1) %>%
  ggplot(aes(x = Embarked, y = Fare)) + 
  geom_jitter(aes(colour = Pclass))

Full %>% ggplot(aes(x = Embarked, y = Fare)) +
  geom_boxplot(aes(colour = Pclass))

Full$Embarked[Embarked_miss] <- 'C'

step4: to deal with NA: title

# Check Name
head(Full$Name, 10)
##  [1] "Braund, Mr. Owen Harris"                            
##  [2] "Cumings, Mrs. John Bradley (Florence Briggs Thayer)"
##  [3] "Heikkinen, Miss. Laina"                             
##  [4] "Futrelle, Mrs. Jacques Heath (Lily May Peel)"       
##  [5] "Allen, Mr. William Henry"                           
##  [6] "Moran, Mr. James"                                   
##  [7] "McCarthy, Mr. Timothy J"                            
##  [8] "Palsson, Master. Gosta Leonard"                     
##  [9] "Johnson, Mrs. Oscar W (Elisabeth Vilhelmina Berg)"  
## [10] "Nasser, Mrs. Nicholas (Adele Achem)"
Full$title <- str_replace_all(Full$Name, '(.*, )|(\\..*)', '')
table(Full$title)
## 
##         Capt          Col          Don         Dona           Dr 
##            1            4            1            1            8 
##     Jonkheer         Lady        Major       Master         Miss 
##            1            1            2           61          260 
##         Mlle          Mme           Mr          Mrs           Ms 
##            2            1          757          197            2 
##          Rev          Sir the Countess 
##            8            1            1
rare_title <- c('Dona', 'Lady', 'the Countess','Capt', 'Col', 'Don', 'Dr', 'Major', 'Rev', 'Sir', 'Jonkheer')
Full$title[Full$title == 'Mlle']  <- 'Miss' 
Full$title[Full$title == 'Ms'] <- 'Miss'
Full$title[Full$title == 'Mme'] <- 'Mrs' 
Full$title[Full$title %in% rare_title] <- 'Rare Title'
Full$title <- factor(Full$title)
table(Full$Sex, Full$title)
##         
##          Master Miss  Mr Mrs Rare Title
##   female      0  264   0 198          4
##   male       61    0 757   0         25
Full %>%
  ggplot(aes(x = title, y = Age)) +
  geom_boxplot(aes(colour = Sex))

glimpse(Full)
## Observations: 1,309
## Variables: 11
## $ Pclass   <fct> 3, 1, 3, 1, 3, 3, 1, 3, 3, 2, 3, 1, 3, 3, 3, 2, 3, 2,...
## $ Name     <chr> "Braund, Mr. Owen Harris", "Cumings, Mrs. John Bradle...
## $ Sex      <fct> male, female, female, female, male, male, male, male,...
## $ Age      <dbl> 22, 38, 26, 35, 35, NA, 54, 2, 27, 14, 4, 58, 20, 39,...
## $ SibSp    <int> 1, 1, 0, 1, 0, 0, 0, 3, 0, 1, 1, 0, 0, 1, 0, 0, 4, 0,...
## $ Parch    <int> 0, 0, 0, 0, 0, 0, 0, 1, 2, 0, 1, 0, 0, 5, 0, 0, 1, 0,...
## $ Ticket   <chr> "A/5 21171", "PC 17599", "STON/O2. 3101282", "113803"...
## $ Fare     <dbl> 7.2500, 71.2833, 7.9250, 53.1000, 8.0500, 8.4583, 51....
## $ Cabin    <chr> NA, "C85", NA, "C123", NA, NA, "E46", NA, NA, NA, "G6...
## $ Embarked <fct> S, C, S, S, S, Q, S, S, S, C, S, S, S, S, S, S, Q, S,...
## $ title    <fct> Mr, Mrs, Miss, Mrs, Mr, Mr, Mr, Master, Mrs, Mrs, Mis...
Full %>% group_by(.$title) %>%
  summarize(meanA = mean(Age, na.rm = T))
## # A tibble: 5 x 2
##   `.$title`  meanA
##   <fct>      <dbl>
## 1 Master      5.48
## 2 Miss       21.8 
## 3 Mr         32.3 
## 4 Mrs        36.9 
## 5 Rare Title 45.2
Full$Age[Full$title == 'Master'] = 5.48
Full$Age[Full$title == 'Miss'] = 21.8
Full$Age[Full$title == 'Mr'] = 32.3
Full$Age[Full$title == 'Mrs'] = 36.9
Full$Age[Full$title == 'Rare Title'] = 45.2
map_df(Full, function(x) sum(is.na(x))) %>% glimpse()
## Observations: 1
## Variables: 11
## $ Pclass   <int> 0
## $ Name     <int> 0
## $ Sex      <int> 0
## $ Age      <int> 0
## $ SibSp    <int> 0
## $ Parch    <int> 0
## $ Ticket   <int> 0
## $ Fare     <int> 0
## $ Cabin    <int> 1014
## $ Embarked <int> 0
## $ title    <int> 0
Full[, "Cabin"] <- NULL
train_final = Full[1:891, ]
train_final[, c("Name","Ticket")] <- NULL
target_final = Full[892:1309, ]
target_final[, c("Name","Ticket")] <- NULL
train_labels <- Train$Survived

step5: to use random forest package

train_final$Survived <- train_labels
# Set a random seed
set.seed(754)
library(randomForest)
glimpse(train_final)
## Observations: 891
## Variables: 9
## $ Pclass   <fct> 3, 1, 3, 1, 3, 3, 1, 3, 3, 2, 3, 1, 3, 3, 3, 2, 3, 2,...
## $ Sex      <fct> male, female, female, female, male, male, male, male,...
## $ Age      <dbl> 32.30, 36.90, 21.80, 36.90, 32.30, 32.30, 32.30, 5.48...
## $ SibSp    <int> 1, 1, 0, 1, 0, 0, 0, 3, 0, 1, 1, 0, 0, 1, 0, 0, 4, 0,...
## $ Parch    <int> 0, 0, 0, 0, 0, 0, 0, 1, 2, 0, 1, 0, 0, 5, 0, 0, 1, 0,...
## $ Fare     <dbl> 7.2500, 71.2833, 7.9250, 53.1000, 8.0500, 8.4583, 51....
## $ Embarked <fct> S, C, S, S, S, Q, S, S, S, C, S, S, S, S, S, S, Q, S,...
## $ title    <fct> Mr, Mrs, Miss, Mrs, Mr, Mr, Mr, Master, Mrs, Mrs, Mis...
## $ Survived <int> 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 1,...
# Build the model (note: not all possible variables are used)
rf_model <- randomForest(factor(Survived) ~ Pclass + Sex + Age + SibSp + Parch + Fare + Embarked, data = train_final)
prediction <- predict(rf_model, target_final)
prediction
##   1   2   3   4   5   6   7   8   9  10  11  12  13  14  15  16  17  18 
##   0   0   0   0   0   0   1   0   1   0   0   0   1   0   1   1   0   0 
##  19  20  21  22  23  24  25  26  27  28  29  30  31  32  33  34  35  36 
##   0   1   0   1   1   0   1   0   1   0   0   0   0   0   1   0   1   0 
##  37  38  39  40  41  42  43  44  45  46  47  48  49  50  51  52  53  54 
##   0   0   0   1   0   0   0   1   1   0   0   0   1   1   0   0   1   1 
##  55  56  57  58  59  60  61  62  63  64  65  66  67  68  69  70  71  72 
##   0   0   0   0   0   1   0   0   0   1   1   1   1   0   0   1   1   0 
##  73  74  75  76  77  78  79  80  81  82  83  84  85  86  87  88  89  90 
##   0   0   1   0   0   1   0   1   1   0   0   0   0   0   1   0   1   1 
##  91  92  93  94  95  96  97  98  99 100 101 102 103 104 105 106 107 108 
##   0   0   1   0   0   0   1   0   0   0   1   0   0   0   0   0   0   0 
## 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 
##   0   0   0   1   1   1   1   0   0   1   0   1   1   0   1   0   0   1 
## 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 
##   0   1   0   0   0   0   0   0   0   0   0   0   0   0   0   1   0   0 
## 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 
##   0   0   0   0   0   0   1   0   0   1   0   0   1   0   0   1   1   1 
## 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 
##   1   0   0   1   0   0   1   0   0   0   0   0   0   1   1   1   1   1 
## 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 
##   0   0   1   0   1   0   1   0   0   0   0   0   1   0   1   0   1   0 
## 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 
##   0   1   1   1   1   1   0   0   1   0   1   0   0   0   0   1   0   0 
## 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 
##   1   0   1   0   1   0   1   0   1   1   0   1   0   0   0   1   0   0 
## 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 
##   0   0   1   0   1   1   1   1   0   0   1   0   1   0   1   1   1   0 
## 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 
##   0   0   0   0   0   0   1   0   0   0   1   1   0   0   0   0   0   0 
## 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 
##   0   0   1   1   0   1   0   0   0   0   0   1   1   0   1   0   0   0 
## 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 
##   0   0   0   1   0   0   0   0   1   0   0   0   0   0   0   0   1   1 
## 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 
##   0   1   0   0   0   0   0   1   1   1   0   0   0   0   0   0   0   0 
## 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 
##   1   0   1   0   0   0   1   0   0   1   0   0   0   0   0   1   0   0 
## 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 
##   0   1   1   1   0   1   0   1   1   0   0   0   0   0   1   0   0   1 
## 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 
##   0   1   1   0   1   0   0   0   1   0   0   1   0   0   1   1   0   0 
## 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 
##   0   0   0   0   1   1   0   1   0   0   0   0   0   1   1   0   0   1 
## 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 
##   0   1   0   0   1   0   1   0   0   0   0   0   1   1   1   1   0   0 
## 415 416 417 418 
##   1   0   0   1 
## Levels: 0 1