readrtibble och read_*read_* funktionerna är oerhört smarta, hjälper dig att läsa data och returnerar alltid en tibble.
En tibble en “snyggare” och ärligare data.frame
Blir detta som du tänkt dig?
data.frame(x=list("="="=", "B"="b"), # length 2
y=c(1,2,3)) # length 3
tibble(x=list("="="=", "B"="b"),
y=c(1,2,3))
data.frame(x=list("A"="a", "B"="b"),
y=list("C"="c", "D"="d"))
tibble(x=list("A"="a", "B"="b"),
y=list("C"="c", "D"="d"))
read_*Snabbare än base-R read.*, används på samma sätt.
Gör inte strängar till faktorer.
Inget konstigt med dina kolumn-namn.
Beror inte på miljövariabler i ditt system, ex. ladda en fil i Windows behöver inte ge samma resultat som på linux/OSX.
Användbara argument col_types (colClasses från read.*) och guess_max
Vi kommer klaga om du använder read.csv istället för read_csv
readxl::read_excelreadxl, excel filer är speciellareadxl::read_excel funktion för att läsa .xls/ .xlsx filer.read_excel argumentet sheet.dplyrarrange ordnar raderna i datamtcars <- tibble::rownames_to_column(mtcars, var = "model") kable(head(arrange(mtcars, mpg), n = 4))
| model | mpg | cyl | disp | hp | drat | wt | qsec | vs | am | gear | carb |
|---|---|---|---|---|---|---|---|---|---|---|---|
| Cadillac Fleetwood | 10.4 | 8 | 472 | 205 | 2.93 | 5.250 | 17.98 | 0 | 0 | 3 | 4 |
| Lincoln Continental | 10.4 | 8 | 460 | 215 | 3.00 | 5.424 | 17.82 | 0 | 0 | 3 | 4 |
| Camaro Z28 | 13.3 | 8 | 350 | 245 | 3.73 | 3.840 | 15.41 | 0 | 0 | 3 | 4 |
| Duster 360 | 14.3 | 8 | 360 | 245 | 3.21 | 3.570 | 15.84 | 0 | 0 | 3 | 4 |
arrange ordnar raderna i datakable(head(arrange(mtcars, mpg, disp), n = 4))
| model | mpg | cyl | disp | hp | drat | wt | qsec | vs | am | gear | carb |
|---|---|---|---|---|---|---|---|---|---|---|---|
| Lincoln Continental | 10.4 | 8 | 460 | 215 | 3.00 | 5.424 | 17.82 | 0 | 0 | 3 | 4 |
| Cadillac Fleetwood | 10.4 | 8 | 472 | 205 | 2.93 | 5.250 | 17.98 | 0 | 0 | 3 | 4 |
| Camaro Z28 | 13.3 | 8 | 350 | 245 | 3.73 | 3.840 | 15.41 | 0 | 0 | 3 | 4 |
| Duster 360 | 14.3 | 8 | 360 | 245 | 3.21 | 3.570 | 15.84 | 0 | 0 | 3 | 4 |
filter välj ut rader (observationer)#only those with manual transmission kable(head(filter(mtcars, am == 1), n=4))
| model | mpg | cyl | disp | hp | drat | wt | qsec | vs | am | gear | carb |
|---|---|---|---|---|---|---|---|---|---|---|---|
| Mazda RX4 | 21.0 | 6 | 160.0 | 110 | 3.90 | 2.620 | 16.46 | 0 | 1 | 4 | 4 |
| Mazda RX4 Wag | 21.0 | 6 | 160.0 | 110 | 3.90 | 2.875 | 17.02 | 0 | 1 | 4 | 4 |
| Datsun 710 | 22.8 | 4 | 108.0 | 93 | 3.85 | 2.320 | 18.61 | 1 | 1 | 4 | 1 |
| Fiat 128 | 32.4 | 4 | 78.7 | 66 | 4.08 | 2.200 | 19.47 | 1 | 1 | 4 | 1 |
filter välj ut rader (observationer)kable(head(filter(mtcars, mpg < 30), n=4))
| model | mpg | cyl | disp | hp | drat | wt | qsec | vs | am | gear | carb |
|---|---|---|---|---|---|---|---|---|---|---|---|
| Mazda RX4 | 21.0 | 6 | 160 | 110 | 3.90 | 2.620 | 16.46 | 0 | 1 | 4 | 4 |
| Mazda RX4 Wag | 21.0 | 6 | 160 | 110 | 3.90 | 2.875 | 17.02 | 0 | 1 | 4 | 4 |
| Datsun 710 | 22.8 | 4 | 108 | 93 | 3.85 | 2.320 | 18.61 | 1 | 1 | 4 | 1 |
| Hornet 4 Drive | 21.4 | 6 | 258 | 110 | 3.08 | 3.215 | 19.44 | 1 | 0 | 3 | 1 |
mutate inför ny/transformerar variabelkable(head(mutate(mtcars, lpm = 235 / mpg), n=4))
| model | mpg | cyl | disp | hp | drat | wt | qsec | vs | am | gear | carb | lpm |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Mazda RX4 | 21.0 | 6 | 160 | 110 | 3.90 | 2.620 | 16.46 | 0 | 1 | 4 | 4 | 11.19048 |
| Mazda RX4 Wag | 21.0 | 6 | 160 | 110 | 3.90 | 2.875 | 17.02 | 0 | 1 | 4 | 4 | 11.19048 |
| Datsun 710 | 22.8 | 4 | 108 | 93 | 3.85 | 2.320 | 18.61 | 1 | 1 | 4 | 1 | 10.30702 |
| Hornet 4 Drive | 21.4 | 6 | 258 | 110 | 3.08 | 3.215 | 19.44 | 1 | 0 | 3 | 1 | 10.98131 |
select väljer ut variabler (kolumner)kable(head(select(mtcars, model, mpg), n=4))
| model | mpg |
|---|---|
| Mazda RX4 | 21.0 |
| Mazda RX4 Wag | 21.0 |
| Datsun 710 | 22.8 |
| Hornet 4 Drive | 21.4 |
%>%Vilken funktion tar argumentet x=3?
df <- f1(f2(f3(f4(mtcars, x=2), x), x=3))
Detta är inte enkelt att läsa! Hur kan vi lösa det?
%>%Bestäm \(h\circ g \circ f(a) = h(g(f(a)))\)
Tre olika sätt att räkna detta i R:
b <- f(a) c <- g(b) h(c)
h(f(g(a)))
a %>%
f %>%
g %>%
h
%>%mtcars <- mutate(mtcars, lpm = 235 / mpg) mtcars <- filter(mtcars, am == 1) ggplot(mtcars, aes(x = hp, y = lpm)) + geom_point()
ggplot(
filter(
mutate(mtcars, lpm = 235 / mpg)
, am ==1),
aes(x = hp, y = lpm)) + geom_point()
mtcars %>%
mutate(lpm = 235 / mpg) %>%
filter(am == 1) %>%
ggplot(aes(x = hp, y = lpm)) + geom_point()
ggplot2ggplot2En statistisk plot har beståndsdelar
datageom: typ av geometriska objekt (punkter, linjer, …)cord: koordinatsystemmapping: binder data till koordinatsysteets dimensioner/“aesthetics” (läge, färg, form, storlek, …)ggplot2En scatterplot
data: mpg och hp för ett antal bilargeom: punktercoord: Kartesiskamapping: binder hp till position på x-axeln och mpg på y-axelnggplot2ggplot(data = mtcars, mapping = aes(x = hp, y = mpg)) + geom_point()
ggplot2 med lite färg och storlekarggplot(mtcars,
aes(x = hp, y = mpg, size = wt, color = cyl)) +
geom_point()
Vad är cyl?
ggplot2 typerna i mtcars spelar roll!ggplot(mtcars,
aes(x = hp, y = mpg, size = wt, color = as.factor(cyl))) +
geom_point()
ggplot2 argument utanför aes men i ett geomggplot(mtcars,
aes(x = hp, y = mpg, size = wt)) +
geom_point(color = cyl)
# ERROR
ggplot(mtcars,
aes(x = hp, y = mpg, size = wt)) +
geom_point(color = "red")
# OK
aes tittar i mtcars men inte geom!
ggplot2Försiktig med att återanvända namn i kolumner, variabler osv.
cyl <- "blue"
ggplot(mtcars,
aes(x = hp, y = mpg, size = wt)) +
geom_point(color = cyl)
Error?