RStudio Vektor Arithmetik

Kalifornien hat die meisten Morde zu verzeichnen, aber bedeutet das, dass es der gefährlichste Staat ist? Was ist, wenn er einfach viel mehr Menschen hat als jeder andere Staat? Wir können schnell bestätigen, dass Kalifornien tatsächlich die größte Bevölkerung hat:

library(dslabs)
data("murders")
murders$state[which.max(murders$population)]
#> [1] "California"

Mit über 37 Millionen Einwohnern. Es ist daher unfair, die Gesamtzahlen zu vergleichen, wenn wir wissen wollen, wie sicher der Staat ist. Was wir wirklich berechnen sollten, ist die Zahl der Morde pro Kopf. In den Berichten, die wir im motivierenden Abschnitt beschrieben haben, wurden die Morde pro 100.000 als Einheit verwendet. Zur Berechnung dieser Größe sind die leistungsstarken vektorarithmetischen Fähigkeiten von R sehr nützlich.

Skalierung eines Vektors

In R werden arithmetische Operationen auf Vektoren elementweise durchgeführt. Ein kurzes Beispiel: Nehmen wir an, wir haben die Höhe in Zoll:

inches <- c(69, 62, 66, 70, 70, 73, 67, 73, 67, 70)

und wollen in Zentimeter umrechnen. Beachten Sie, was passiert, wenn wir Zoll mit 2,54 multiplizieren:

inches * 2.54
#>  [1] 175 157 168 178 178 185 170 185 170 178

In der obigen Zeile haben wir jedes Element mit 2,54 multipliziert. Ähnlich verhält es sich, wenn wir für jeden Eintrag berechnen wollen, wie viele Zentimeter größer oder kürzer als 69 Zentimeter, die durchschnittliche Körpergröße für Männer, sind, können wir dies von jedem Eintrag wie folgt subtrahieren:

inches - 69
#>  [1]  0 -7 -3  1  1  4 -2  4 -2  1

Rechenoperationen mit zwei Vektoren

Wenn wir zwei Vektoren der gleichen Länge haben und sie in R summieren, werden sie Eintrag für Eintrag wie folgt addiert:

RStudio Vektor Arithmetik 1

Das Gleiche gilt für andere mathematische Operationen, wie , * und /.

Dies bedeutet, dass wir zur Berechnung der Mordraten einfach eingeben können:

murder_rate <- murders$total / murders$population * 100000

Wenn wir dies tun, stellen wir fest, dass Kalifornien nicht mehr an der Spitze der Liste steht. Tatsächlich können wir das, was wir gelernt haben, nutzen, um die Staaten nach der Mordrate zu ordnen:

murders$abb[order(murder_rate)]

Übungen

Übung 1


# Assign city names to `city` 
city <- c("Beijing", "Lagos", "Paris", "Rio de Janeiro", "San Juan", "Toronto")

# Store temperature values in `temp`
temp <- c(35, 88, 42, 84, 81, 30)

# Convert temperature into Celsius and overwrite the original values of 'temp' with these Celsius values
temp <- 5/9*(temp-32)


# Create a data frame `city_temps` 
city_temps <- data.frame(name=city, temperature =temp)

Übung 2

# Store the murder rate per 100,000 for each state, in `murder_rate`
murder_rate <- murders$total / murders$population * 100000

# Store the `murder_rate < 1` in `low` 

low <- murder_rate<1

# Get the indices of entries that are below 1
which(low)

# Names of states with murder rates lower than 1

murders$state[low]

# Create a vector ind for states in the Northeast and with murder rates lower than 1. 
ind <- low & murders$region == "Northeast"

# Names of states in `ind` 
murders$state[ind]

# Compute the average murder rate using `mean` and store it in object named `avg`
avg <- mean(murder_rate)

# How many states have murder rates below avg ? Check using sum 
sum(murder_rate < avg)