Kapitel 4 Bilaga

4.1 Variabeltyper i R

De variabeltyper som finns i R är:

Beskrivning Synonymer typeof() Exempel
Heltal int, numeric integer -2, 0, 1
Reella tal real, double, float, numeric double 1.03, 0.22
Komplexa tal cplx complex 1+2i
Logiska värden booelan, bool, logi logical TRUE, FALSE
Faktorer factors fctr “Women”
Datum dates date “2017-02-04”
Text string, char character “Hello R!”

flights är en så kallad data.frame som egentligen är en samling vektorer. data.frame är den vanligaste data-typen i R för att arbeta med data.

Om du är nyfiken på att undersöka variabeltypen, eller klassen, på ett objekt eller en kolumn kan du använda funktionen class()

## [1] "numeric"
## [1] "character"

4.1.1 Vektorer

Vektorer är ett objekt i R som innehåller en eller flera element. En vektor kan endast innehålla en typ av variabel. Det vanligaste sättet att skapa en vektor är genom c().

4.1.2 Faktorvariabel

En annan typ av variabel är den såkallade faktorer, factor. Faktorer är kategoriska variabler som har olika nivåer som representerar fakta. Kön eller åldersgrupp är exempel på faktorer.

## [1] A B A A
## Levels: A B
## [1] "factor"
## [1] "A" "B"

4.1.3 Logik

Logiska värdena förekommer ofta i programmeringsvärlden. De logiska värdena i R är: TRUE, FALSE och NA.

4.1.3.1 Logiska operatorer

Logiska operatorer är de operatorer som bara kan användas på logiska vektorer. Det kallas även för boolsk algebra.

De viktigaste operatorerna i R visas i tabellen nedan.

Operator Symbol i R
och (and) &
eller(or) |
icke(not) !

4.1.3.2 Relationsoperatorer

Man vill ofta jämföra olika vektorer för att sedan indexera en datamängd. Detta görs med hjälp av relationsoperatorer som beskrivs nedan.

  1. Använder relationsoperatorer för att jämföra olika variabler.
  2. Relationsoperatorer returnerar logiska värde.
  3. Logiska värdena används sedan för indexering.

De vanligaste relationsoperatorer i R är följande:

Relationsoperatorer Symbol i R
lika ==
inte lika !=
större än eller lika >=
mindre än eller lika <=
större än >
mindre än <
finns i %in%

4.1.4 Matriser

Matriser är också en av de vanligaste datastruktur i R. Den har två dimensioner, rader och kolumner. Likt som vektorer så kan matriser bara innehålla en typ av element. Det innebär att en matris kan endast vara en textmatris, numerisk matris eller logisk matris.

Matriserna kan skapas enkelt i R med funktionen matrix().

##      [,1] [,2]
## [1,]    1    3
## [2,]    2    4

4.1.5 Data.frame

data.frame är en tabell som innehåller flera olika typer av variabler. Det är egentligen en samling av vektorer, därför kan en data.frame innehålla olika typer av vektorer som numeriska, logiska, textsträngar och faktorer.

För att skapa ett dataset i R används funktionen data.frame()

##   num text  logi
## 1   1 Text  TRUE
## 2   2 Text  TRUE
## 3   3 Text FALSE

Det finns ett antal förinstallerade data frames i R som du kan använda, det är även vanligt med paket vars enda syfte är att innehålla data.

För att kolla upp vilka data frames som finns förinstallerade kan du använda funktionen data().

4.1.5.1 $

Även om dplyr är att föredra för datamanipuleringar är det bra att veta att det går att göra samma manipuleringar i R men med en annan syntax. Då använder man i princip endast de inbyggda paketen (ofta kallade för base) som laddas mer R.

En viktig operatör i base-R är $ (extract-operator) som extraherar värden från objekt baserat på namn.

Exempelvis

##  [1] 6 6 4 6 8 6 8 4 4 6 6 8 8 8 8 8 8 4 4 4 4 8 8 8 8 4 4 4 8 6 8 4

Med $ kan du också skapa nya variabler.

Eller döpa om variabler

4.1.5.2 colnames()

Om du vill ha dina kolumnnamn som en vektor kan du extrahera dessa med colnames().

##  [1] "mpg"                   "cyl"                  
##  [3] "disp"                  "hp"                   
##  [5] "drat"                  "wt"                   
##  [7] "qsec"                  "vs"                   
##  [9] "am"                    "gear"                 
## [11] "carb"                  "ny_variabel"          
## [13] "mpg_med_konstigt_namn"

Ibland kanske du har en lista på variabelnamn som du vill att data ska ha.

Då kan du applicera colnames() med din vektor på din data.frame.

##                        A B     C   D    E     F     G H I J K       NA
## Mazda RX4           21.0 6 160.0 110 3.90 2.620 16.46 0 1 4 4 3.500000
## Mazda RX4 Wag       21.0 6 160.0 110 3.90 2.875 17.02 0 1 4 4 3.500000
## Datsun 710          22.8 4 108.0  93 3.85 2.320 18.61 1 1 4 1 5.700000
## Hornet 4 Drive      21.4 6 258.0 110 3.08 3.215 19.44 1 0 3 1 3.566667
## Hornet Sportabout   18.7 8 360.0 175 3.15 3.440 17.02 0 0 3 2 2.337500
## Valiant             18.1 6 225.0 105 2.76 3.460 20.22 1 0 3 1 3.016667
## Duster 360          14.3 8 360.0 245 3.21 3.570 15.84 0 0 3 4 1.787500
## Merc 240D           24.4 4 146.7  62 3.69 3.190 20.00 1 0 4 2 6.100000
## Merc 230            22.8 4 140.8  95 3.92 3.150 22.90 1 0 4 2 5.700000
## Merc 280            19.2 6 167.6 123 3.92 3.440 18.30 1 0 4 4 3.200000
## Merc 280C           17.8 6 167.6 123 3.92 3.440 18.90 1 0 4 4 2.966667
## Merc 450SE          16.4 8 275.8 180 3.07 4.070 17.40 0 0 3 3 2.050000
## Merc 450SL          17.3 8 275.8 180 3.07 3.730 17.60 0 0 3 3 2.162500
## Merc 450SLC         15.2 8 275.8 180 3.07 3.780 18.00 0 0 3 3 1.900000
## Cadillac Fleetwood  10.4 8 472.0 205 2.93 5.250 17.98 0 0 3 4 1.300000
## Lincoln Continental 10.4 8 460.0 215 3.00 5.424 17.82 0 0 3 4 1.300000
## Chrysler Imperial   14.7 8 440.0 230 3.23 5.345 17.42 0 0 3 4 1.837500
## Fiat 128            32.4 4  78.7  66 4.08 2.200 19.47 1 1 4 1 8.100000
## Honda Civic         30.4 4  75.7  52 4.93 1.615 18.52 1 1 4 2 7.600000
## Toyota Corolla      33.9 4  71.1  65 4.22 1.835 19.90 1 1 4 1 8.475000
## Toyota Corona       21.5 4 120.1  97 3.70 2.465 20.01 1 0 3 1 5.375000
## Dodge Challenger    15.5 8 318.0 150 2.76 3.520 16.87 0 0 3 2 1.937500
## AMC Javelin         15.2 8 304.0 150 3.15 3.435 17.30 0 0 3 2 1.900000
## Camaro Z28          13.3 8 350.0 245 3.73 3.840 15.41 0 0 3 4 1.662500
## Pontiac Firebird    19.2 8 400.0 175 3.08 3.845 17.05 0 0 3 2 2.400000
## Fiat X1-9           27.3 4  79.0  66 4.08 1.935 18.90 1 1 4 1 6.825000
## Porsche 914-2       26.0 4 120.3  91 4.43 2.140 16.70 0 1 5 2 6.500000
## Lotus Europa        30.4 4  95.1 113 3.77 1.513 16.90 1 1 5 2 7.600000
## Ford Pantera L      15.8 8 351.0 264 4.22 3.170 14.50 0 1 5 4 1.975000
## Ferrari Dino        19.7 6 145.0 175 3.62 2.770 15.50 0 1 5 6 3.283333
## Maserati Bora       15.0 8 301.0 335 3.54 3.570 14.60 0 1 5 8 1.875000
## Volvo 142E          21.4 4 121.0 109 4.11 2.780 18.60 1 1 4 2 5.350000
##                       NA
## Mazda RX4           21.0
## Mazda RX4 Wag       21.0
## Datsun 710          22.8
## Hornet 4 Drive      21.4
## Hornet Sportabout   18.7
## Valiant             18.1
## Duster 360          14.3
## Merc 240D           24.4
## Merc 230            22.8
## Merc 280            19.2
## Merc 280C           17.8
## Merc 450SE          16.4
## Merc 450SL          17.3
## Merc 450SLC         15.2
## Cadillac Fleetwood  10.4
## Lincoln Continental 10.4
## Chrysler Imperial   14.7
## Fiat 128            32.4
## Honda Civic         30.4
## Toyota Corolla      33.9
## Toyota Corona       21.5
## Dodge Challenger    15.5
## AMC Javelin         15.2
## Camaro Z28          13.3
## Pontiac Firebird    19.2
## Fiat X1-9           27.3
## Porsche 914-2       26.0
## Lotus Europa        30.4
## Ford Pantera L      15.8
## Ferrari Dino        19.7
## Maserati Bora       15.0
## Volvo 142E          21.4

4.1.6 Listor

Listor är mer generell datastruktur i R. Man kan jämföra lista med en “låda” som innehåller olika datastrukter i R. En lista kan innehålla vektorer, data.frame och matriser, i olika längd och storlek, samtidigt.

För att skapa en lista används funktionen list()

## [[1]]
## [1] "hej"   "Kalle" "hejdå"
## 
## [[2]]
## [1]  TRUE FALSE FALSE  TRUE
## 
## [[3]]
## [1] 1 2 3 4 5 6 7 8

Ett mycket vanligt exempel på en lista är modellobjekt, dvs objektet man skapar när man anpassar en modell, till exempel en regressionsmodell. Hela resultatet från modellanpassningen ligger på en lista. Se nedan.

## [1] TRUE
## $names
##  [1] "coefficients"  "residuals"     "effects"       "rank"         
##  [5] "fitted.values" "assign"        "qr"            "df.residual"  
##  [9] "contrasts"     "xlevels"       "call"          "terms"        
## [13] "model"        
## 
## $class
## [1] "lm"

lm är en lista som innehåller bland annat regressions koefficienter, residualer, anpassade värden, mm.

4.1.7 Datum

I R uttrycks datum som antal dagar från 1970-01-01. Datum som kommer innan det skrivs ut som negativa värde.

## Time difference of 17757 days
## [1] "2018-08-14"

Sys.Date() ger dagens datum. date() returnerar dagens veckodag, datum och tid.

4.1.7.1 Olika datumformat

Symbol i R Betydelse Exempel
%d dagnummer 01-31
%a förkortad veckodag Mon
%A full veckodag Monday
%m månad nummer 00-12
%b förkortad månad Jan
%B full månad January
%y 2 siffrig år 18
%Y 4 siffrig år 2018

4.2 Indexering

Ibland är man bara intresserad av en kolumn eller enstaka värde. För att indexera eller plocka ut specifikt element ur ett objekt kan man använda sig av hackparentes [] eller dollar tecken $ och detta görs på olika sätt. ### Genom att ange positions nummer

## [1] 20
## [1] 15.0 20.0 20.0 23.0  1.2

Kör koden nedan för att se resultatet.

4.2.2 Genom att ange namn av elementet eller kolumnen

Det går att namnge element i en vektor. Koder nedan visar hur man ger namn till varje element i en vektor. Efter att ha namngett vektorn kan du nu plocka ut värde med hjälp av namn.

##   Zaida    Anna  Helena     Per   Filip Annelie 
##     7.0    15.0    20.0    20.0    23.0     1.2
## Per 
##  20
## Filip 
##    23
## [1] "Sepal.Length" "Sepal.Width"  "Petal.Length" "Petal.Width" 
## [5] "Species"