Recall that in the last unit, we discussed the challenge of standardizing many columns in a data frame. For example, we wanted to standardize all the numeric variables in the dataset iris
.
Here is the function we wrote for that:
standardize <- function(data) {
deviations <- data - mean(data, na.rm = TRUE)
newdata <- deviations / sd(data, na.rm = TRUE)
return(newdata)
}
Question 1: Why does the following not work?
## Sepal.Length Sepal.Width Petal.Length Petal.Width Species
## 1 5.1 3.5 NA 0.2 setosa
## 2 4.9 3.0 NA 0.2 setosa
## 3 4.7 3.2 NA 0.2 setosa
## 4 4.6 3.1 NA 0.2 setosa
## 5 5.0 3.6 NA 0.2 setosa
## 6 5.4 3.9 NA 0.4 setosa
## 7 4.6 3.4 NA 0.3 setosa
## 8 5.0 3.4 NA 0.2 setosa
## 9 4.4 2.9 NA 0.2 setosa
## 10 4.9 3.1 NA 0.1 setosa
## 11 5.4 3.7 NA 0.2 setosa
## 12 4.8 3.4 NA 0.2 setosa
## 13 4.8 3.0 NA 0.1 setosa
## 14 4.3 3.0 NA 0.1 setosa
## 15 5.8 4.0 NA 0.2 setosa
## 16 5.7 4.4 NA 0.4 setosa
## 17 5.4 3.9 NA 0.4 setosa
## 18 5.1 3.5 NA 0.3 setosa
## 19 5.7 3.8 NA 0.3 setosa
## 20 5.1 3.8 NA 0.3 setosa
## 21 5.4 3.4 NA 0.2 setosa
## 22 5.1 3.7 NA 0.4 setosa
## 23 4.6 3.6 NA 0.2 setosa
## 24 5.1 3.3 NA 0.5 setosa
## 25 4.8 3.4 NA 0.2 setosa
## 26 5.0 3.0 NA 0.2 setosa
## 27 5.0 3.4 NA 0.4 setosa
## 28 5.2 3.5 NA 0.2 setosa
## 29 5.2 3.4 NA 0.2 setosa
## 30 4.7 3.2 NA 0.2 setosa
## 31 4.8 3.1 NA 0.2 setosa
## 32 5.4 3.4 NA 0.4 setosa
## 33 5.2 4.1 NA 0.1 setosa
## 34 5.5 4.2 NA 0.2 setosa
## 35 4.9 3.1 NA 0.2 setosa
## 36 5.0 3.2 NA 0.2 setosa
## 37 5.5 3.5 NA 0.2 setosa
## 38 4.9 3.6 NA 0.1 setosa
## 39 4.4 3.0 NA 0.2 setosa
## 40 5.1 3.4 NA 0.2 setosa
## 41 5.0 3.5 NA 0.3 setosa
## 42 4.5 2.3 NA 0.3 setosa
## 43 4.4 3.2 NA 0.2 setosa
## 44 5.0 3.5 NA 0.6 setosa
## 45 5.1 3.8 NA 0.4 setosa
## 46 4.8 3.0 NA 0.3 setosa
## 47 5.1 3.8 NA 0.2 setosa
## 48 4.6 3.2 NA 0.2 setosa
## 49 5.3 3.7 NA 0.2 setosa
## 50 5.0 3.3 NA 0.2 setosa
## 51 7.0 3.2 NA 1.4 versicolor
## 52 6.4 3.2 NA 1.5 versicolor
## 53 6.9 3.1 NA 1.5 versicolor
## 54 5.5 2.3 NA 1.3 versicolor
## 55 6.5 2.8 NA 1.5 versicolor
## 56 5.7 2.8 NA 1.3 versicolor
## 57 6.3 3.3 NA 1.6 versicolor
## 58 4.9 2.4 NA 1.0 versicolor
## 59 6.6 2.9 NA 1.3 versicolor
## 60 5.2 2.7 NA 1.4 versicolor
## 61 5.0 2.0 NA 1.0 versicolor
## 62 5.9 3.0 NA 1.5 versicolor
## 63 6.0 2.2 NA 1.0 versicolor
## 64 6.1 2.9 NA 1.4 versicolor
## 65 5.6 2.9 NA 1.3 versicolor
## 66 6.7 3.1 NA 1.4 versicolor
## 67 5.6 3.0 NA 1.5 versicolor
## 68 5.8 2.7 NA 1.0 versicolor
## 69 6.2 2.2 NA 1.5 versicolor
## 70 5.6 2.5 NA 1.1 versicolor
## 71 5.9 3.2 NA 1.8 versicolor
## 72 6.1 2.8 NA 1.3 versicolor
## 73 6.3 2.5 NA 1.5 versicolor
## 74 6.1 2.8 NA 1.2 versicolor
## 75 6.4 2.9 NA 1.3 versicolor
## 76 6.6 3.0 NA 1.4 versicolor
## 77 6.8 2.8 NA 1.4 versicolor
## 78 6.7 3.0 NA 1.7 versicolor
## 79 6.0 2.9 NA 1.5 versicolor
## 80 5.7 2.6 NA 1.0 versicolor
## 81 5.5 2.4 NA 1.1 versicolor
## 82 5.5 2.4 NA 1.0 versicolor
## 83 5.8 2.7 NA 1.2 versicolor
## 84 6.0 2.7 NA 1.6 versicolor
## 85 5.4 3.0 NA 1.5 versicolor
## 86 6.0 3.4 NA 1.6 versicolor
## 87 6.7 3.1 NA 1.5 versicolor
## 88 6.3 2.3 NA 1.3 versicolor
## 89 5.6 3.0 NA 1.3 versicolor
## 90 5.5 2.5 NA 1.3 versicolor
## 91 5.5 2.6 NA 1.2 versicolor
## 92 6.1 3.0 NA 1.4 versicolor
## 93 5.8 2.6 NA 1.2 versicolor
## 94 5.0 2.3 NA 1.0 versicolor
## 95 5.6 2.7 NA 1.3 versicolor
## 96 5.7 3.0 NA 1.2 versicolor
## 97 5.7 2.9 NA 1.3 versicolor
## 98 6.2 2.9 NA 1.3 versicolor
## 99 5.1 2.5 NA 1.1 versicolor
## 100 5.7 2.8 NA 1.3 versicolor
## 101 6.3 3.3 NA 2.5 virginica
## 102 5.8 2.7 NA 1.9 virginica
## 103 7.1 3.0 NA 2.1 virginica
## 104 6.3 2.9 NA 1.8 virginica
## 105 6.5 3.0 NA 2.2 virginica
## 106 7.6 3.0 NA 2.1 virginica
## 107 4.9 2.5 NA 1.7 virginica
## 108 7.3 2.9 NA 1.8 virginica
## 109 6.7 2.5 NA 1.8 virginica
## 110 7.2 3.6 NA 2.5 virginica
## 111 6.5 3.2 NA 2.0 virginica
## 112 6.4 2.7 NA 1.9 virginica
## 113 6.8 3.0 NA 2.1 virginica
## 114 5.7 2.5 NA 2.0 virginica
## 115 5.8 2.8 NA 2.4 virginica
## 116 6.4 3.2 NA 2.3 virginica
## 117 6.5 3.0 NA 1.8 virginica
## 118 7.7 3.8 NA 2.2 virginica
## 119 7.7 2.6 NA 2.3 virginica
## 120 6.0 2.2 NA 1.5 virginica
## 121 6.9 3.2 NA 2.3 virginica
## 122 5.6 2.8 NA 2.0 virginica
## 123 7.7 2.8 NA 2.0 virginica
## 124 6.3 2.7 NA 1.8 virginica
## 125 6.7 3.3 NA 2.1 virginica
## 126 7.2 3.2 NA 1.8 virginica
## 127 6.2 2.8 NA 1.8 virginica
## 128 6.1 3.0 NA 1.8 virginica
## 129 6.4 2.8 NA 2.1 virginica
## 130 7.2 3.0 NA 1.6 virginica
## 131 7.4 2.8 NA 1.9 virginica
## 132 7.9 3.8 NA 2.0 virginica
## 133 6.4 2.8 NA 2.2 virginica
## 134 6.3 2.8 NA 1.5 virginica
## 135 6.1 2.6 NA 1.4 virginica
## 136 7.7 3.0 NA 2.3 virginica
## 137 6.3 3.4 NA 2.4 virginica
## 138 6.4 3.1 NA 1.8 virginica
## 139 6.0 3.0 NA 1.8 virginica
## 140 6.9 3.1 NA 2.1 virginica
## 141 6.7 3.1 NA 2.4 virginica
## 142 6.9 3.1 NA 2.3 virginica
## 143 5.8 2.7 NA 1.9 virginica
## 144 6.8 3.2 NA 2.3 virginica
## 145 6.7 3.3 NA 2.5 virginica
## 146 6.7 3.0 NA 2.3 virginica
## 147 6.3 2.5 NA 1.9 virginica
## 148 6.5 3.0 NA 2.0 virginica
## 149 6.2 3.4 NA 2.3 virginica
## 150 5.9 3.0 NA 1.8 virginica
Question 2:
Use appropriate map
or apply
functions, along with scale()
, to create a standardized version of the iris
dataset. Do this without copy-pasting lines and changing Petal.Length
to Petal.Width
, etc.
(I recommend looking into map_dfc()
, although this is not the only possible solution.)