Homework #1.5 - Solution

Problem 1

8 points possible

  1. 1 pt - load data
  2. 1 pt - str
  3. 2 pt - select columns
  4. 2 pt - add calculated column
  5. 2 pt - summarize columns

part a

crania <-read.table("https://stats.are-awesome.com/datasets/Howell_craniometry.txt", sep=",", header=TRUE, na.strings = 0)
head(crania)
##   ID Sex PopNum Population GOL NOL BNL BBH XCB XFB ZYB AUB WCB ASB BPL NPH NLH
## 1  1   M      1      NORSE 189 185 100 135 143 120 133 119  70 112  96  66  50
## 2  2   M      1      NORSE 182 178 102 139 145 120 137 125  66 113 108  64  48
## 3  3   M      1      NORSE 191 187 102 123 140 114 134 125  74 112 102  67  53
## 4  4   M      1      NORSE 191 188 100 127 141 123 135 127  71 113  95  76  53
## 5  5   M      1      NORSE 178 177  97 128 138 117 129 121  69 111  90  67  51
## 6  6   M      1      NORSE 194 191 106 132 139 118 136 128  76 112 102  69  50
##   JUB NLB MAB MDH MDB OBH OBB DKB NDS  WNB SIS ZMB SSS FMB NAS EKB DKS IML XML
## 1 118  26  63  31  13  31  42  22  12  9.5 4.9  83  20 100  19 100   8  42  57
## 2 118  25  72  19  13  28  39  21   9 10.8 4.5 101  27  95  17  96   9  32  53
## 3 112  23  65  28  14  33  41  20  13  8.1 4.5  90  24  98  19  97  10  35  56
## 4 114  26  62  25  12  35  40  23  10  8.8 4.4  94  23  98  16  99   8  34  52
## 5 115  24  64  26  14  32  39  21  11  8.9 5.4  91  21  96  18  97  10  35  52
## 6 117  25  65  29  13  33  40  22  13  8.3 2.8  91  22 101  20  98  11  38  57
##   MLS WMH SOS GLS STB FRC FRS FRF PAC PAS PAF OCC OCS OCF FOL NAR SSR PRR DKR
## 1  13  24   7   4 115 118  25  53 119  26  62  98  30  51  34  96  95 100  84
## 2  10  23   6   4 117 116  28  55 113  24  59  93  27  39  34  93 102 108  84
## 3  10  24   6   4 112 107  25  47 118  23  59  88  30  45  41  96  96 102  82
## 4  11  22   8   3 116 109  26  47 116  24  57  94  34  50  38  92  93  98  81
## 5  12  27   5   2 116 102  22  45 113  26  62  94  32  40  34  91  92  94  79
## 6  10  23   6   3 115 107  23  49 115  26  58 103  34  47  35 100 100 104  87
##   ZOR FMR EKR ZMR AVR BRR VRR LAR OSR BAR NAA PRA BAA NBA BBA BRA SSA NFA DKA
## 1  81  74  73  76  83  NA 122  NA  NA  NA  67  74  39  76  58  46 129 138 158
## 2  84  76  73  74  82  NA 124  NA  NA  NA  77  67  35  79  55  46 124 141 153
## 3  82  77  72  70  82  NA 116  NA  NA  NA  71  71  38  72  56  52 124 138 152
## 4  79  79  73  72  77  NA 118  NA  NA  NA  64  71  46  75  56  49 128 144 157
## 5  79  72  69  71  76  NA 118  NA  NA  NA  64  75  42  80  52  48 130 139 150
## 6  88  79  75  78  84  NA 125  NA  NA  NA  68  74  39  77  52  51 128 137 148
##   NDA SIA FRA PAA OCA RFA RPA ROA BSA SBA SLA TBA
## 1  85  88 134 133 117  NA  NA  NA  NA  NA  NA  NA
## 2  99 100 128 134 119  NA  NA  NA  NA  NA  NA  NA
## 3  75  84 129 137 111  NA  NA  NA  NA  NA  NA  NA
## 4  98  90 128 135 108  NA  NA  NA  NA  NA  NA  NA
## 5  87  79 133 130 111  NA  NA  NA  NA  NA  NA  NA
## 6  80 112 133 131 113  NA  NA  NA  NA  NA  NA  NA

part b

str(crania)
## 'data.frame':	2524 obs. of  86 variables:
##  $ ID        : int  1 2 3 4 5 6 7 8 9 10 ...
##  $ Sex       : chr  "M" "M" "M" "M" ...
##  $ PopNum    : int  1 1 1 1 1 1 1 1 1 1 ...
##  $ Population: chr  "NORSE" "NORSE" "NORSE" "NORSE" ...
##  $ GOL       : int  189 182 191 191 178 194 186 186 186 189 ...
##  $ NOL       : int  185 178 187 188 177 191 183 184 182 189 ...
##  $ BNL       : int  100 102 102 100 97 106 95 103 96 101 ...
##  $ BBH       : int  135 139 123 127 128 132 122 130 134 131 ...
##  $ XCB       : int  143 145 140 141 138 139 143 141 141 144 ...
##  $ XFB       : int  120 120 114 123 117 118 122 121 123 115 ...
##  $ ZYB       : int  133 137 134 135 129 136 128 128 135 130 ...
##  $ AUB       : int  119 125 125 127 121 128 119 121 123 125 ...
##  $ WCB       : int  70 66 74 71 69 76 71 72 71 63 ...
##  $ ASB       : int  112 113 112 113 111 112 108 109 111 108 ...
##  $ BPL       : int  96 108 102 95 90 102 95 100 87 95 ...
##  $ NPH       : int  66 64 67 76 67 69 66 64 72 63 ...
##  $ NLH       : int  50 48 53 53 51 50 49 49 51 50 ...
##  $ JUB       : int  118 118 112 114 115 117 114 118 115 115 ...
##  $ NLB       : int  26 25 23 26 24 25 24 25 24 25 ...
##  $ MAB       : int  63 72 65 62 64 65 61 62 61 61 ...
##  $ MDH       : int  31 19 28 25 26 29 26 32 31 28 ...
##  $ MDB       : int  13 13 14 12 14 13 11 13 12 12 ...
##  $ OBH       : int  31 28 33 35 32 33 32 35 33 33 ...
##  $ OBB       : int  42 39 41 40 39 40 39 38 39 40 ...
##  $ DKB       : int  22 21 20 23 21 22 25 27 20 19 ...
##  $ NDS       : int  12 9 13 10 11 13 14 14 15 14 ...
##  $ WNB       : num  9.5 10.8 8.1 8.8 8.9 8.3 9.4 13.1 8.2 8.1 ...
##  $ SIS       : num  4.9 4.5 4.5 4.4 5.4 2.8 4.3 3.7 4.5 4.6 ...
##  $ ZMB       : int  83 101 90 94 91 91 95 100 90 93 ...
##  $ SSS       : int  20 27 24 23 21 22 22 17 22 20 ...
##  $ FMB       : int  100 95 98 98 96 101 97 99 95 96 ...
##  $ NAS       : int  19 17 19 16 18 20 20 19 20 17 ...
##  $ EKB       : int  100 96 97 99 97 98 95 100 97 96 ...
##  $ DKS       : int  8 9 10 8 10 11 11 8 9 10 ...
##  $ IML       : int  42 32 35 34 35 38 36 37 37 38 ...
##  $ XML       : int  57 53 56 52 52 57 55 55 57 54 ...
##  $ MLS       : int  13 10 10 11 12 10 12 14 10 10 ...
##  $ WMH       : int  24 23 24 22 27 23 26 27 28 25 ...
##  $ SOS       : int  7 6 6 8 5 6 11 5 7 4 ...
##  $ GLS       : int  4 4 4 3 2 3 4 3 5 2 ...
##  $ STB       : int  115 117 112 116 116 115 121 114 123 114 ...
##  $ FRC       : int  118 116 107 109 102 107 113 112 118 118 ...
##  $ FRS       : int  25 28 25 26 22 23 26 24 28 28 ...
##  $ FRF       : int  53 55 47 47 45 49 55 53 59 52 ...
##  $ PAC       : int  119 113 118 116 113 115 115 117 111 106 ...
##  $ PAS       : int  26 24 23 24 26 26 24 26 25 25 ...
##  $ PAF       : int  62 59 59 57 62 58 64 62 65 57 ...
##  $ OCC       : int  98 93 88 94 94 103 93 94 101 107 ...
##  $ OCS       : int  30 27 30 34 32 34 32 25 31 36 ...
##  $ OCF       : int  51 39 45 50 40 47 45 42 56 53 ...
##  $ FOL       : int  34 34 41 38 34 35 32 38 33 34 ...
##  $ NAR       : int  96 93 96 92 91 100 94 93 94 93 ...
##  $ SSR       : int  95 102 96 93 92 100 94 91 92 93 ...
##  $ PRR       : int  100 108 102 98 94 104 98 98 98 96 ...
##  $ DKR       : int  84 84 82 81 79 87 81 78 79 79 ...
##  $ ZOR       : int  81 84 82 79 79 88 80 80 81 80 ...
##  $ FMR       : int  74 76 77 79 72 79 73 74 76 75 ...
##  $ EKR       : int  73 73 72 73 69 75 70 70 70 69 ...
##  $ ZMR       : int  76 74 70 72 71 78 73 74 71 73 ...
##  $ AVR       : int  83 82 82 77 76 84 77 78 79 78 ...
##  $ BRR       : int  NA NA NA NA NA NA NA NA NA NA ...
##  $ VRR       : int  122 124 116 118 118 125 118 122 120 124 ...
##  $ LAR       : int  NA NA NA NA NA NA NA NA NA NA ...
##  $ OSR       : int  NA NA NA NA NA NA NA NA NA NA ...
##  $ BAR       : int  NA NA NA NA NA NA NA NA NA NA ...
##  $ NAA       : int  67 77 71 64 64 68 70 69 60 66 ...
##  $ PRA       : int  74 67 71 71 75 74 70 74 74 77 ...
##  $ BAA       : int  39 35 38 46 42 39 41 37 46 37 ...
##  $ NBA       : int  76 79 72 75 80 77 71 74 77 73 ...
##  $ BBA       : int  58 55 56 56 52 52 61 56 59 59 ...
##  $ BRA       : int  46 46 52 49 48 51 47 50 44 48 ...
##  $ SSA       : int  129 124 124 128 130 128 130 142 128 133 ...
##  $ NFA       : int  138 141 138 144 139 137 135 138 134 141 ...
##  $ DKA       : int  158 153 152 157 150 148 147 156 153 151 ...
##  $ NDA       : int  85 99 75 98 87 80 84 88 67 68 ...
##  $ SIA       : int  88 100 84 90 79 112 95 121 85 83 ...
##  $ FRA       : int  134 128 129 128 133 133 131 134 129 129 ...
##  $ PAA       : int  133 134 137 135 130 131 134 132 130 129 ...
##  $ OCA       : int  117 119 111 108 111 113 111 124 116 112 ...
##  $ RFA       : int  NA NA NA NA NA NA NA NA NA NA ...
##  $ RPA       : int  NA NA NA NA NA NA NA NA NA NA ...
##  $ ROA       : int  NA NA NA NA NA NA NA NA NA NA ...
##  $ BSA       : int  NA NA NA NA NA NA NA NA NA NA ...
##  $ SBA       : int  NA NA NA NA NA NA NA NA NA NA ...
##  $ SLA       : int  NA NA NA NA NA NA NA NA NA NA ...
##  $ TBA       : int  NA NA NA NA NA NA NA NA NA NA ...

part c

library(dplyr)
selectedCols <- 
  crania %>%
  select(XFB, OBB, SIS, Sex)
head(selectedCols)
##   XFB OBB SIS Sex
## 1 120  42 4.9   M
## 2 120  39 4.5   M
## 3 114  41 4.5   M
## 4 123  40 4.4   M
## 5 117  39 5.4   M
## 6 118  40 2.8   M

part d

## notice here how I am overwriting the entire selectedCols dataframe with the 
## new dataframe with the additional product column
selectedCols <- 
  selectedCols %>%
    mutate(product = XFB * OBB * SIS)
head(selectedCols)
##   XFB OBB SIS Sex product
## 1 120  42 4.9   M 24696.0
## 2 120  39 4.5   M 21060.0
## 3 114  41 4.5   M 21033.0
## 4 123  40 4.4   M 21648.0
## 5 117  39 5.4   M 24640.2
## 6 118  40 2.8   M 13216.0

part e

summarized <- 
  selectedCols %>% 
  group_by(Sex) %>%
  summarize(meanProduct=mean(product, na.rm=TRUE), 
            minProduct=min(product, na.rm=TRUE), 
            maxProduct=max(product, na.rm=TRUE))

head(summarized)
## # A tibble: 2 × 4
##   Sex   meanProduct minProduct maxProduct
##   <chr>       <dbl>      <dbl>      <dbl>
## 1 F          11978.       364.      34036
## 2 M          15301.       418       37084