class: center, middle, inverse, title-slide # How to Use Multiple
filter()
functions with Boolean logic ## Selecting specific rows with multiple criteria ### Peter Higgins ### 2021-01-10 --- ### How to Use Multiple Filters to Pick Out a Subset of Rows #### Combining Logical Statements Format: <br> `dataset %>% filter(var1 > value & var2 > value)` You can combine statements with the following: - & (AND) (age >60 & fam_hx < 1) - | (OR) (age >65 | fam_hx == 1) - ! (NOT) (age >= 65 & fam_hx ! = 1) - XOR (exclusive OR - only if exactly one of the two is true filter(xor(age >= 65, fam_hx == 1) **R**emember that filte**R** is for selecting **R**ows because it ends with an **R**. Let's look at some examples! --- count: false Example 1/4: Filter Rows with Multiple Criteria: Age >65 and Tumor Volume > 1 .panel1-filter1-auto[ ```r # how many rows when you start *nrow(prostate) ``` ] .panel2-filter1-auto[ ``` [1] 316 ``` ] --- count: false Example 1/4: Filter Rows with Multiple Criteria: Age >65 and Tumor Volume > 1 .panel1-filter1-auto[ ```r # how many rows when you start nrow(prostate) *prostate ``` ] .panel2-filter1-auto[ ``` [1] 316 ``` ``` # A tibble: 316 x 20 rbc_age_group median_rbc_age age aa fam_hx p_vol t_vol t_stage b_gs <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> 1 3 25 72.1 0 0 54 3 1 3 2 3 25 73.6 0 0 43.2 3 2 2 3 3 25 67.5 0 0 103. 1 1 3 4 2 15 65.8 0 0 46 1 1 1 5 2 15 63.2 0 0 60 2 1 2 6 3 25 65.4 0 0 45.9 2 1 1 7 3 25 65.5 1 0 42.6 2 1 1 8 1 10 67.1 0 0 40.7 3 1 1 9 1 10 63.9 0 0 45 2 1 1 10 2 15 63 1 0 67.6 2 1 2 # … with 306 more rows, and 11 more variables: bn <dbl>, organ_confined <dbl>, # preop_psa <dbl>, preop_therapy <dbl>, units <dbl>, s_gs <dbl>, # any_adj_therapy <dbl>, adj_rad_therapy <dbl>, recurrence <dbl>, # censor <dbl>, time_to_recurrence <dbl> ``` ] --- count: false Example 1/4: Filter Rows with Multiple Criteria: Age >65 and Tumor Volume > 1 .panel1-filter1-auto[ ```r # how many rows when you start nrow(prostate) prostate %>% # selected 3 columns # see how age and t_vol change w/filter * select(age, t_vol, recurrence) ``` ] .panel2-filter1-auto[ ``` [1] 316 ``` ``` # A tibble: 316 x 3 age t_vol recurrence <dbl> <dbl> <dbl> 1 72.1 3 1 2 73.6 3 1 3 67.5 1 0 4 65.8 1 0 5 63.2 2 0 6 65.4 2 0 7 65.5 2 0 8 67.1 3 1 9 63.9 2 0 10 63 2 0 # … with 306 more rows ``` ] --- count: false Example 1/4: Filter Rows with Multiple Criteria: Age >65 and Tumor Volume > 1 .panel1-filter1-auto[ ```r # how many rows when you start nrow(prostate) prostate %>% # selected 3 columns # see how age and t_vol change w/filter select(age, t_vol, recurrence) %>% * filter(age > 65 & t_vol>1) ``` ] .panel2-filter1-auto[ ``` [1] 316 ``` ``` # A tibble: 72 x 3 age t_vol recurrence <dbl> <dbl> <dbl> 1 72.1 3 1 2 73.6 3 1 3 65.4 2 0 4 65.5 2 0 5 67.1 3 1 6 73.3 2 0 7 67.6 2 0 8 65.2 2 0 9 67.1 3 0 10 69.8 2 0 # … with 62 more rows ``` ] --- count: false Example 1/4: Filter Rows with Multiple Criteria: Age >65 and Tumor Volume > 1 .panel1-filter1-auto[ ```r # how many rows when you start nrow(prostate) prostate %>% # selected 3 columns # see how age and t_vol change w/filter select(age, t_vol, recurrence) %>% filter(age > 65 & t_vol>1) # see how many rows now # check age and t_vol # Format: *# filter(logic test 1 & logic test 2) <br> # filter(logic test 1 & logic test 2) <br> ``` ] .panel2-filter1-auto[ ``` [1] 316 ``` ``` # A tibble: 72 x 3 age t_vol recurrence <dbl> <dbl> <dbl> 1 72.1 3 1 2 73.6 3 1 3 65.4 2 0 4 65.5 2 0 5 67.1 3 1 6 73.3 2 0 7 67.6 2 0 8 65.2 2 0 9 67.1 3 0 10 69.8 2 0 # … with 62 more rows ``` ] --- count: false Example 1/4: Filter Rows with Multiple Criteria: Age >65 and Tumor Volume > 1 .panel1-filter1-auto[ ```r # how many rows when you start nrow(prostate) prostate %>% # selected 3 columns # see how age and t_vol change w/filter select(age, t_vol, recurrence) %>% filter(age > 65 & t_vol>1) # see how many rows now # check age and t_vol # Format: # filter(logic test 1 & logic test 2) <br> # filter(logic test 1 & logic test 2) <br> ``` ] .panel2-filter1-auto[ ``` [1] 316 ``` ``` # A tibble: 72 x 3 age t_vol recurrence <dbl> <dbl> <dbl> 1 72.1 3 1 2 73.6 3 1 3 65.4 2 0 4 65.5 2 0 5 67.1 3 1 6 73.3 2 0 7 67.6 2 0 8 65.2 2 0 9 67.1 3 0 10 69.8 2 0 # … with 62 more rows ``` ] <style> .panel1-filter1-auto { color: black; width: 38.6060606060606%; hight: 32%; float: left; padding-left: 1%; font-size: 80% } .panel2-filter1-auto { color: black; width: 59.3939393939394%; hight: 32%; float: left; padding-left: 1%; font-size: 80% } .panel3-filter1-auto { color: black; width: NA%; hight: 33%; float: left; padding-left: 1%; font-size: 80% } </style> --- count: false Example 2/4: Filter Rows with OR Criteria - **watch** the symbol for OR .panel1-filter2-auto[ ```r # how many rows when you start *nrow(prostate) ``` ] .panel2-filter2-auto[ ``` [1] 316 ``` ] --- count: false Example 2/4: Filter Rows with OR Criteria - **watch** the symbol for OR .panel1-filter2-auto[ ```r # how many rows when you start nrow(prostate) *prostate ``` ] .panel2-filter2-auto[ ``` [1] 316 ``` ``` # A tibble: 316 x 20 rbc_age_group median_rbc_age age aa fam_hx p_vol t_vol t_stage b_gs <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> 1 3 25 72.1 0 0 54 3 1 3 2 3 25 73.6 0 0 43.2 3 2 2 3 3 25 67.5 0 0 103. 1 1 3 4 2 15 65.8 0 0 46 1 1 1 5 2 15 63.2 0 0 60 2 1 2 6 3 25 65.4 0 0 45.9 2 1 1 7 3 25 65.5 1 0 42.6 2 1 1 8 1 10 67.1 0 0 40.7 3 1 1 9 1 10 63.9 0 0 45 2 1 1 10 2 15 63 1 0 67.6 2 1 2 # … with 306 more rows, and 11 more variables: bn <dbl>, organ_confined <dbl>, # preop_psa <dbl>, preop_therapy <dbl>, units <dbl>, s_gs <dbl>, # any_adj_therapy <dbl>, adj_rad_therapy <dbl>, recurrence <dbl>, # censor <dbl>, time_to_recurrence <dbl> ``` ] --- count: false Example 2/4: Filter Rows with OR Criteria - **watch** the symbol for OR .panel1-filter2-auto[ ```r # how many rows when you start nrow(prostate) prostate %>% # selected 3 columns # see how age and aa change w/filter * select(age, aa, t_vol) ``` ] .panel2-filter2-auto[ ``` [1] 316 ``` ``` # A tibble: 316 x 3 age aa t_vol <dbl> <dbl> <dbl> 1 72.1 0 3 2 73.6 0 3 3 67.5 0 1 4 65.8 0 1 5 63.2 0 2 6 65.4 0 2 7 65.5 1 2 8 67.1 0 3 9 63.9 0 2 10 63 1 2 # … with 306 more rows ``` ] --- count: false Example 2/4: Filter Rows with OR Criteria - **watch** the symbol for OR .panel1-filter2-auto[ ```r # how many rows when you start nrow(prostate) prostate %>% # selected 3 columns # see how age and aa change w/filter select(age, aa, t_vol) %>% * filter(age > 69 | t_vol > 1) ``` ] .panel2-filter2-auto[ ``` [1] 316 ``` ``` # A tibble: 256 x 3 age aa t_vol <dbl> <dbl> <dbl> 1 72.1 0 3 2 73.6 0 3 3 63.2 0 2 4 65.4 0 2 5 65.5 1 2 6 67.1 0 3 7 63.9 0 2 8 63 1 2 9 58.5 0 3 10 56.2 0 2 # … with 246 more rows ``` ] --- count: false Example 2/4: Filter Rows with OR Criteria - **watch** the symbol for OR .panel1-filter2-auto[ ```r # how many rows when you start nrow(prostate) prostate %>% # selected 3 columns # see how age and aa change w/filter select(age, aa, t_vol) %>% filter(age > 69 | t_vol > 1) %>% * arrange(desc(age)) ``` ] .panel2-filter2-auto[ ``` [1] 316 ``` ``` # A tibble: 256 x 3 age aa t_vol <dbl> <dbl> <dbl> 1 79 0 2 2 78.3 0 1 3 76.9 0 1 4 76.3 0 NA 5 74.9 0 3 6 74.8 0 2 7 74.6 0 1 8 74.4 0 3 9 74.2 0 2 10 73.9 1 2 # … with 246 more rows ``` ] --- count: false Example 2/4: Filter Rows with OR Criteria - **watch** the symbol for OR .panel1-filter2-auto[ ```r # how many rows when you start nrow(prostate) prostate %>% # selected 3 columns # see how age and aa change w/filter select(age, aa, t_vol) %>% filter(age > 69 | t_vol > 1) %>% arrange(desc(age)) # see how many rows now # watch age and aa status # Format: *# filter(logic test 1 | logic test 2) <br> # filter(logic test 1 | logic test 2) <br> ``` ] .panel2-filter2-auto[ ``` [1] 316 ``` ``` # A tibble: 256 x 3 age aa t_vol <dbl> <dbl> <dbl> 1 79 0 2 2 78.3 0 1 3 76.9 0 1 4 76.3 0 NA 5 74.9 0 3 6 74.8 0 2 7 74.6 0 1 8 74.4 0 3 9 74.2 0 2 10 73.9 1 2 # … with 246 more rows ``` ] --- count: false Example 2/4: Filter Rows with OR Criteria - **watch** the symbol for OR .panel1-filter2-auto[ ```r # how many rows when you start nrow(prostate) prostate %>% # selected 3 columns # see how age and aa change w/filter select(age, aa, t_vol) %>% filter(age > 69 | t_vol > 1) %>% arrange(desc(age)) # see how many rows now # watch age and aa status # Format: # filter(logic test 1 | logic test 2) <br> # filter(logic test 1 | logic test 2) <br> ``` ] .panel2-filter2-auto[ ``` [1] 316 ``` ``` # A tibble: 256 x 3 age aa t_vol <dbl> <dbl> <dbl> 1 79 0 2 2 78.3 0 1 3 76.9 0 1 4 76.3 0 NA 5 74.9 0 3 6 74.8 0 2 7 74.6 0 1 8 74.4 0 3 9 74.2 0 2 10 73.9 1 2 # … with 246 more rows ``` ] <style> .panel1-filter2-auto { color: black; width: 38.6060606060606%; hight: 32%; float: left; padding-left: 1%; font-size: 80% } .panel2-filter2-auto { color: black; width: 59.3939393939394%; hight: 32%; float: left; padding-left: 1%; font-size: 80% } .panel3-filter2-auto { color: black; width: NA%; hight: 33%; float: left; padding-left: 1%; font-size: 80% } </style> --- count: false Example 3/4: Filter Rows with XOR Criteria - **Watch** the Syntax!<br> xor = Exclusive OR - only one OR the other statement is TRUE, not both. .panel1-filter3-auto[ ```r # how many rows when you start *nrow(prostate) ``` ] .panel2-filter3-auto[ ``` [1] 316 ``` ] --- count: false Example 3/4: Filter Rows with XOR Criteria - **Watch** the Syntax!<br> xor = Exclusive OR - only one OR the other statement is TRUE, not both. .panel1-filter3-auto[ ```r # how many rows when you start nrow(prostate) *prostate ``` ] .panel2-filter3-auto[ ``` [1] 316 ``` ``` # A tibble: 316 x 20 rbc_age_group median_rbc_age age aa fam_hx p_vol t_vol t_stage b_gs <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> 1 3 25 72.1 0 0 54 3 1 3 2 3 25 73.6 0 0 43.2 3 2 2 3 3 25 67.5 0 0 103. 1 1 3 4 2 15 65.8 0 0 46 1 1 1 5 2 15 63.2 0 0 60 2 1 2 6 3 25 65.4 0 0 45.9 2 1 1 7 3 25 65.5 1 0 42.6 2 1 1 8 1 10 67.1 0 0 40.7 3 1 1 9 1 10 63.9 0 0 45 2 1 1 10 2 15 63 1 0 67.6 2 1 2 # … with 306 more rows, and 11 more variables: bn <dbl>, organ_confined <dbl>, # preop_psa <dbl>, preop_therapy <dbl>, units <dbl>, s_gs <dbl>, # any_adj_therapy <dbl>, adj_rad_therapy <dbl>, recurrence <dbl>, # censor <dbl>, time_to_recurrence <dbl> ``` ] --- count: false Example 3/4: Filter Rows with XOR Criteria - **Watch** the Syntax!<br> xor = Exclusive OR - only one OR the other statement is TRUE, not both. .panel1-filter3-auto[ ```r # how many rows when you start nrow(prostate) prostate %>% # selected 3 columns # see how age and aa change w/filter * select(age, aa, t_vol) ``` ] .panel2-filter3-auto[ ``` [1] 316 ``` ``` # A tibble: 316 x 3 age aa t_vol <dbl> <dbl> <dbl> 1 72.1 0 3 2 73.6 0 3 3 67.5 0 1 4 65.8 0 1 5 63.2 0 2 6 65.4 0 2 7 65.5 1 2 8 67.1 0 3 9 63.9 0 2 10 63 1 2 # … with 306 more rows ``` ] --- count: false Example 3/4: Filter Rows with XOR Criteria - **Watch** the Syntax!<br> xor = Exclusive OR - only one OR the other statement is TRUE, not both. .panel1-filter3-auto[ ```r # how many rows when you start nrow(prostate) prostate %>% # selected 3 columns # see how age and aa change w/filter select(age, aa, t_vol) %>% * filter(xor(age > 69, t_vol > 1)) ``` ] .panel2-filter3-auto[ ``` [1] 316 ``` ``` # A tibble: 224 x 3 age aa t_vol <dbl> <dbl> <dbl> 1 63.2 0 2 2 65.4 0 2 3 65.5 1 2 4 67.1 0 3 5 63.9 0 2 6 63 1 2 7 58.5 0 3 8 56.2 0 2 9 59.7 1 2 10 67.6 0 2 # … with 214 more rows ``` ] --- count: false Example 3/4: Filter Rows with XOR Criteria - **Watch** the Syntax!<br> xor = Exclusive OR - only one OR the other statement is TRUE, not both. .panel1-filter3-auto[ ```r # how many rows when you start nrow(prostate) prostate %>% # selected 3 columns # see how age and aa change w/filter select(age, aa, t_vol) %>% filter(xor(age > 69, t_vol > 1)) %>% * arrange(desc(age)) ``` ] .panel2-filter3-auto[ ``` [1] 316 ``` ``` # A tibble: 224 x 3 age aa t_vol <dbl> <dbl> <dbl> 1 78.3 0 1 2 76.9 0 1 3 74.6 0 1 4 71.9 0 1 5 71.4 0 1 6 71.2 0 1 7 71 0 1 8 70.6 1 1 9 69.7 0 1 10 69 1 2 # … with 214 more rows ``` ] --- count: false Example 3/4: Filter Rows with XOR Criteria - **Watch** the Syntax!<br> xor = Exclusive OR - only one OR the other statement is TRUE, not both. .panel1-filter3-auto[ ```r # how many rows when you start nrow(prostate) prostate %>% # selected 3 columns # see how age and aa change w/filter select(age, aa, t_vol) %>% filter(xor(age > 69, t_vol > 1)) %>% arrange(desc(age)) # see how many rows now # watch age and aa status # Format: *# filter(xor(logic test 1, logic test 2)) <br> # filter(xor(logic test 1, logic test 2)) <br> ``` ] .panel2-filter3-auto[ ``` [1] 316 ``` ``` # A tibble: 224 x 3 age aa t_vol <dbl> <dbl> <dbl> 1 78.3 0 1 2 76.9 0 1 3 74.6 0 1 4 71.9 0 1 5 71.4 0 1 6 71.2 0 1 7 71 0 1 8 70.6 1 1 9 69.7 0 1 10 69 1 2 # … with 214 more rows ``` ] --- count: false Example 3/4: Filter Rows with XOR Criteria - **Watch** the Syntax!<br> xor = Exclusive OR - only one OR the other statement is TRUE, not both. .panel1-filter3-auto[ ```r # how many rows when you start nrow(prostate) prostate %>% # selected 3 columns # see how age and aa change w/filter select(age, aa, t_vol) %>% filter(xor(age > 69, t_vol > 1)) %>% arrange(desc(age)) # see how many rows now # watch age and aa status # Format: # filter(xor(logic test 1, logic test 2)) <br> # filter(xor(logic test 1, logic test 2)) <br> ``` ] .panel2-filter3-auto[ ``` [1] 316 ``` ``` # A tibble: 224 x 3 age aa t_vol <dbl> <dbl> <dbl> 1 78.3 0 1 2 76.9 0 1 3 74.6 0 1 4 71.9 0 1 5 71.4 0 1 6 71.2 0 1 7 71 0 1 8 70.6 1 1 9 69.7 0 1 10 69 1 2 # … with 214 more rows ``` ] <style> .panel1-filter3-auto { color: black; width: 38.6060606060606%; hight: 32%; float: left; padding-left: 1%; font-size: 80% } .panel2-filter3-auto { color: black; width: 59.3939393939394%; hight: 32%; float: left; padding-left: 1%; font-size: 80% } .panel3-filter3-auto { color: black; width: NA%; hight: 33%; float: left; padding-left: 1%; font-size: 80% } </style> --- count: false Example 4/4: Filter Rows with Age >64, NOT African-American .panel1-filter4-auto[ ```r # how many rows when you start *nrow(prostate) ``` ] .panel2-filter4-auto[ ``` [1] 316 ``` ] --- count: false Example 4/4: Filter Rows with Age >64, NOT African-American .panel1-filter4-auto[ ```r # how many rows when you start nrow(prostate) *prostate ``` ] .panel2-filter4-auto[ ``` [1] 316 ``` ``` # A tibble: 316 x 20 rbc_age_group median_rbc_age age aa fam_hx p_vol t_vol t_stage b_gs <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> 1 3 25 72.1 0 0 54 3 1 3 2 3 25 73.6 0 0 43.2 3 2 2 3 3 25 67.5 0 0 103. 1 1 3 4 2 15 65.8 0 0 46 1 1 1 5 2 15 63.2 0 0 60 2 1 2 6 3 25 65.4 0 0 45.9 2 1 1 7 3 25 65.5 1 0 42.6 2 1 1 8 1 10 67.1 0 0 40.7 3 1 1 9 1 10 63.9 0 0 45 2 1 1 10 2 15 63 1 0 67.6 2 1 2 # … with 306 more rows, and 11 more variables: bn <dbl>, organ_confined <dbl>, # preop_psa <dbl>, preop_therapy <dbl>, units <dbl>, s_gs <dbl>, # any_adj_therapy <dbl>, adj_rad_therapy <dbl>, recurrence <dbl>, # censor <dbl>, time_to_recurrence <dbl> ``` ] --- count: false Example 4/4: Filter Rows with Age >64, NOT African-American .panel1-filter4-auto[ ```r # how many rows when you start nrow(prostate) prostate %>% # selected 3 columns # see how age and aa change w/filter * select(age, aa, recurrence) ``` ] .panel2-filter4-auto[ ``` [1] 316 ``` ``` # A tibble: 316 x 3 age aa recurrence <dbl> <dbl> <dbl> 1 72.1 0 1 2 73.6 0 1 3 67.5 0 0 4 65.8 0 0 5 63.2 0 0 6 65.4 0 0 7 65.5 1 0 8 67.1 0 1 9 63.9 0 0 10 63 1 0 # … with 306 more rows ``` ] --- count: false Example 4/4: Filter Rows with Age >64, NOT African-American .panel1-filter4-auto[ ```r # how many rows when you start nrow(prostate) prostate %>% # selected 3 columns # see how age and aa change w/filter select(age, aa, recurrence) %>% * filter(age > 64 & aa != 1) ``` ] .panel2-filter4-auto[ ``` [1] 316 ``` ``` # A tibble: 103 x 3 age aa recurrence <dbl> <dbl> <dbl> 1 72.1 0 1 2 73.6 0 1 3 67.5 0 0 4 65.8 0 0 5 65.4 0 0 6 67.1 0 1 7 73.3 0 0 8 67.6 0 0 9 65.2 0 0 10 67.1 0 0 # … with 93 more rows ``` ] --- count: false Example 4/4: Filter Rows with Age >64, NOT African-American .panel1-filter4-auto[ ```r # how many rows when you start nrow(prostate) prostate %>% # selected 3 columns # see how age and aa change w/filter select(age, aa, recurrence) %>% filter(age > 64 & aa != 1) %>% * arrange(desc(age)) ``` ] .panel2-filter4-auto[ ``` [1] 316 ``` ``` # A tibble: 103 x 3 age aa recurrence <dbl> <dbl> <dbl> 1 79 0 1 2 78.3 0 1 3 76.9 0 0 4 76.3 0 1 5 74.9 0 0 6 74.8 0 0 7 74.6 0 0 8 74.4 0 0 9 74.2 0 0 10 73.6 0 1 # … with 93 more rows ``` ] --- count: false Example 4/4: Filter Rows with Age >64, NOT African-American .panel1-filter4-auto[ ```r # how many rows when you start nrow(prostate) prostate %>% # selected 3 columns # see how age and aa change w/filter select(age, aa, recurrence) %>% filter(age > 64 & aa != 1) %>% arrange(desc(age)) # see how many rows now # watch age and aa status # Format: *# filter(logic test 1 & logic test 2) <br> # filter(logic test 1 & logic test 2) <br> ``` ] .panel2-filter4-auto[ ``` [1] 316 ``` ``` # A tibble: 103 x 3 age aa recurrence <dbl> <dbl> <dbl> 1 79 0 1 2 78.3 0 1 3 76.9 0 0 4 76.3 0 1 5 74.9 0 0 6 74.8 0 0 7 74.6 0 0 8 74.4 0 0 9 74.2 0 0 10 73.6 0 1 # … with 93 more rows ``` ] --- count: false Example 4/4: Filter Rows with Age >64, NOT African-American .panel1-filter4-auto[ ```r # how many rows when you start nrow(prostate) prostate %>% # selected 3 columns # see how age and aa change w/filter select(age, aa, recurrence) %>% filter(age > 64 & aa != 1) %>% arrange(desc(age)) # see how many rows now # watch age and aa status # Format: # filter(logic test 1 & logic test 2) <br> # filter(logic test 1 & logic test 2) <br> ``` ] .panel2-filter4-auto[ ``` [1] 316 ``` ``` # A tibble: 103 x 3 age aa recurrence <dbl> <dbl> <dbl> 1 79 0 1 2 78.3 0 1 3 76.9 0 0 4 76.3 0 1 5 74.9 0 0 6 74.8 0 0 7 74.6 0 0 8 74.4 0 0 9 74.2 0 0 10 73.6 0 1 # … with 93 more rows ``` ] <style> .panel1-filter4-auto { color: black; width: 38.6060606060606%; hight: 32%; float: left; padding-left: 1%; font-size: 80% } .panel2-filter4-auto { color: black; width: 59.3939393939394%; hight: 32%; float: left; padding-left: 1%; font-size: 80% } .panel3-filter4-auto { color: black; width: NA%; hight: 33%; float: left; padding-left: 1%; font-size: 80% } </style> --- class: inverse, center # End of This Flipbook ## On to The Coding Exercises!