Lite om R
SprÄket R Àr ett sprÄk som anvÀnds för att att analysera data och statistisk analys. R Àr öppen kÀllkod.
R basics
R anvÀnds i terminalen med R
kommando. Man skriver i R sÄ hÀr:
> 5 + 5
[1] 10
Det viktiga att veta Àr att R Àr dynamiskt typad1.
Exempel:
> a <- 1
> b <- "hej"
> a
[1] 1
> b
[1] "hej"
HĂ€r ser man att <-
anvÀnds för att tilldela vÀrde till variabel. ->
och =
fungerar ocksÄ.
Vektorer
Man kan lagra flera vÀrden i en vektor, t ex
> a <- 1:10
> a
[1] 1 2 3 4 5 6 7 8 9 10
> b <- c(a, 2, 3)
> b
[1] 1 2 3 4 5 6 7 8 9 10 2 3
Funktionen c
heter combine
och anvÀnds för att kombinera vektorer.
Funktionen length()
kan anvÀndas för att hitta lÀngden för en vektor.
> a <- 1:10
> length(a)
[1] 10
Man kan komma Ät innehÄllet i en vektor med []
, t.ex.
> a[7] <- 77
> a
[1] 1 2 3 4 5 6 77 8 9 10
R anvÀnder 1-based indexing2.
Vektorerna kan anvÀndas i funktioner, t.ex.
> 5*c(2, 4)
[1] 10 20
> nchar(c("hej", "R"))
[1] 3 1
nchar
returnerar antalet tecken i en strÀng.
Man kan namnge element med names()
, t.ex.
> daylength <- c(4222.6 , 2802.0 , 24, 708.7)
> names(daylength) <- c(" Mercury", "Venus", "Earth", "Moon ")
> daylength
Mercury Venus Earth Moon
4222.6 2802.0 24.0 708.7
> names(daylength)
[1] "Mercury" "Venus" "Earth" "Moon"
GrundlÀggande typer
numeric
: Integer och Double.character
: Representerar text i strÀngar.logical
: Boolean,TRUE
ellerFALSE
,T
ellerF
.- `complexâ: AnvĂ€nds för att representera komplexa tal.
En vektor kan innehÄlla endast en typ och man kan ta reda pÄ typen med funktionen mode()
.
Objekt för att representera data
NÄgra objekt Àr:
- Vektorer
- Matriser - Lagrar data i tvÄ dimensioner.
- âArrayâ - För att lagra data i mer Ă€n tvĂ„ dimensioner. All data mĂ„ste vara av samma typ.
- Listor - Kan lagra data av olika typer och olika sorters objekt.
- Dataramar - Lagra data i rader och kolumner. Kolumnerna kan vara av olika typ.
- Faktorer - Har tvÄ huvudkomponenter
- NivĂ„er: De unika kategorierna eller grupperna som faktorn kan ta. Till exempel, om du har en faktor för kön, kan nivĂ„erna vara âmanâ och âkvinnaâ.
- VÀrden: De observerade vÀrdena i datasetet som hÀnvisar till nÄgon av nivÄerna.
Funktionen str()
kan anvÀndas för att ta reda pÄ typ av objekt man har.
Matriser
Matriser kan skapas med:
matrix(data = NA , nrow = 1, ncol = 1, byrow = FALSE ,
dimnames = NULL)
Funktionen har fem argument (data, nrow, ncol, byrow, dimnames)
. Det som stÄr efter =
Àr defaultvÀrden.
Med byrow
menas om data fylls in rad för rad eller kolumn för kolumn. Med dimnames
kan man ange namn för dimensioner.
> m <- matrix(c("A", "B", "C", "D"), 2, 2)
> m
[,1] [,2]
[1,] "A" "C"
[2,] "B" "D"
Man kan komma Ă„t element genom att ange positionen [raden,kolumnen]
.
> m[2 ,2]
[1] "D"
> m[,2]
[1] "C" "D"
Listor
Lostor kan skapas med list(...)
.
> L <- list ("A", matrix (1:4, 2, 2))
> str(L)
List of 2
$ : chr "A"
$ : int [1:2, 1:2] 1 2 3 4
> str(L[1])
List of 1
$ : chr "A"
> str(L[[1]])
chr "A"
Men [1]
tar man ut första elementen i listan och med [[1]]
tar man ut den verkliga första elementen.
Man kan ocksÄ namnge elementen i en lista. Och komma Ät element med $namn
.
> L2 <- list(Cities = c(" Lund", "Malmo "), Populations = c (87000 , 280000))
> L2$Cities
[1] "Lund" "Malmo"
Man behöver inte anvÀnda namn, men det Àr enklare att hÄlla reda pÄ namnen Àn index.
Man kan Àndra namn med funktionen names()
.
> names(L2)
[1] "Cities" "Populations"
> names(L2) <- c(" stader", "invanare ")
> L2
$stader
[1] "Lund" "Malmo"
$invanare
[1] 87000 280000
Dataramar
Lagrar och behandlar data. Man skapar en ny dataram med funktionen data.frame()
:
> name <- c(" Paul", "Bodil", "Karla", "Diana ")
> age <- c(25, 30, 22, 22)
> persons
<- data.frame(name , age)
> persons
name age
1 Paul 25
2 Bodil 30
3 Karla 22
4 Diana 22
Nu kan vi till exempel rÀkna ut medelvÀrde med mean(persons$age)
. En anvÀndbar funktion för dataramar Àr summary()
:
> summary(persons)
name age
Length:4 Min. :22.00
Class :character 1st Qu.:22.00
Mode :character Median :23.50
Mean :24.75
3rd Qu.:26.25
Max. :30.00
I en dataram kan man indexera som i en matris:
> persons[3,] # third row
name age
3 Karla 22
> persons[,1] # first column
[1] "Paul" "Bodil" "Karla" "Diana "
> persons[-c(2,3),] # alla rader förutom den andra och den tredje
name age
1 Paul 25
4 Diana 22
> persons[, "age"] # using column name as index
[1] 25 30 22 22
> persons[1]
name
1 Paul
2 Bodil
3 Karla
4 Diana
> persons$name # first column
[1] "Paul" "Bodil" "Karla" "Diana "
#
Ă€r kommentarstecknet. -
betyder alla utom.
Man kan omvandla t.ex matriser och listor till dataramar med as.data.frame()
.
Urval av data
Det finns flear sÀtt att vÀlja vilken data man vill se. Exempel:
> a <- 2*(1:10) # skapar en vektor a
> a[4] # visa element 4
> a[c(2,3)] # visa element 2 och 3
> a[-5] # visa allting forutom element 5
> a[c(T,T,T,F...)] # man kan anvÀnda true och false.
> a[a<10] # alla element mindre Àn 10
Operationer och vanliga funktioner
$ @ # Komponent, @*
[ [[ # Indexering
^ # Exponent
+- # UnÀra plus och minus
:: ::: # Ă
tkomst av variabler i 'namespace' *
: # Sekvens
%any%# Special-operator
*/ # Multiplikation, division
+ - # BinÀra addition och subtraktion
< > <= >= == != # JĂ€mfringar
! # Negation
& && # Och
| || # Eller
~ # För att beskriva modeller
-> ->> # Tilldelning, tilldelning i 'enclosing environment'
<- <<- # Tilldelning, tilldelning i 'enclosing environment'
= # Tilldelning (motsvarar '<-')
? # HjÀlp
sum(..., na.rm = FALSE) # Sum function
prod(..., na.rm = FALSE) # Product function
cumsum(x), cumprod(x) # Cumulative sum and product
mean(x, trim = 0, na.rm = FALSE, ...) # Mean value
median(x, na.rm = FALSE) # Median
var(x, na.rm = FALSE) # Variance
sd(x, na.rm = FALSE) # Standard deviation
exp(x) # Exponential function
log(x, base = exp(1)), log10(x), log2(x) # Logarithms (natural, base 10, base 2)
max(..., na.rm = FALSE) # Maximum value
min(..., na.rm = FALSE) # Minimum value
range(..., na.rm = FALSE) # Range (min and max)
which.max(x), which.min(x) # Which value is max/min
sqrt(x), abs(x) # Square root and absolute value
sin(x), cos(x), tan(x) # Sine, cosine, tangent functions (radians)
round(x, digits = 0) # Rounding (digits decimal places)
floor(x), ceiling(x) # Rounding down/up
factorial(x), choose(n, k) # Factorial and combination function (n! / ((n âk)!k!))