100% satisfaction guarantee Immediately available after payment Both online and in PDF No strings attached 4.2 TrustPilot
logo-home
Summary

Datawetenschap PC-practica samenvatting

Rating
-
Sold
-
Pages
30
Uploaded on
03-06-2025
Written in
2024/2025

Samenvatting PC-practica Datawetenschap 2de bachelor bio-ingenieurswetenschappen UGent. Deze saemnvatting dient als een leidraad om alles behandeld in de PC-practica toe te passen en te snappen. Hoofdstuk 5 en 6 uit de theorie curcus zijn ook volledig in de samenvatting vervat (respectievelijk werkcollege 3 en 4). Deze samenvatting is dus ideaal om de werkcolleges aan te pakken en handig voor op het open boek examen. Stuur gerust een bericht indien er vragen zijn.

Show more Read less
Institution
Course

















Whoops! We can’t load your doc right now. Try again or contact support.

Written for

Institution
Study
Course

Document information

Uploaded on
June 3, 2025
Number of pages
30
Written in
2024/2025
Type
Summary

Subjects

Content preview

Werkcollege 1: Het gebruik van R en RStudio


Datamanipulatie: ruwe data in een verwerkbaar formaat omzetten voor verdere data-analyse

 Verwijderen van outliers
 Transformeren van variabelen: PCA, …
 Samenvoegen van tabellen
 Filteren, herordenen, aggregeren, wijzigen van volgorde van observaties, …



Belangrijke verschillen met python

1) Index start bij 1 en loopt tot het einde (python start bij index 0 tot voor ingegeven index)
Dus [1:3] loopt van index 1 tot 3
2) Stapgrootte doen adhv seq(start-getal, stop-getal, by = stapgrootte)
a. Seq(1, 6, by = 3) → 1 4
b. 1:4 → 1 2 3 4
3) Object-type dataframe voor datasets (naast string, integer, array, …)
4) Geen tab gebruik = indentatie, het einde van bv een if statement wordt met accolade } aangeduid



Assign operator <- om waarde aan object toe te kennen  = bij python



Als R-console vastloopt doordat er een haakje vergeten is ofzo en het wacht op extra input → ESC drukken


?functie of help(“functie”) dus zonder ( ), gebruiken om info erover te weten en de argument volgorde te bepalen + STD waarden
Bij volgende zaken kan je bijvoorbeeld ook om hulp vragen

 Help(“+”) of ?”+”
 Help(“%>%’)



Inf output in console = oneindig

NaN = not a number bv van log(-1)



Vectoren in R

Scalairen en karakters worden allemaal als vector in R opgeslaan, dus geen aparte object types voor deze

 Nagaan met is.vector(__) → [1] TRUE
 Vandaar dat je bv als bij x <- “kat en dan x typt de output [1] “kat” in de console krijgt
 [ ] staat voor indices

,Soorten vectoren

 Atomic vector = vector in cursus noemen
o Kan enkel elementen van hetzelfde type bevatten
o Soorten vectortypes → aangezien alle scalairen en karakters vectoren zijn die dan uit 1 type bestaan
▪ Numeric = (num) alle mogelijke getallen → is.numeric() → [1] TRUE
▪ Integer = (int) bevat enkel integers = geheel getal → is.numeric() → [1] TRUE
▪ Character = (char) bevat strings, tussen ‘ ‘ of “ “ genoteerd, beide juiste notatie!
▪ Logical = (logic) bevat logische waarden TRUE en FALSE (boolean bij pyhton bv)
 Generic vector = lijst in cursus noemen
o Kan elementen met verschillende type bevatten



Vectoren hebben ook een specifieke klasse dat via class() weergeven kan worden

 x = “cat” → class(x) geeft [1] “character”
 x=3 → class(x) geeft [1] “numeric”



Hoe atomic vector creëren → spiekbrief C
de vector die gecreëerd wordt heeft hetzelfde type als de naam van de functie
om een “lege” vector te initiëren type je volgende zaken

 numeric(x) 0 omzetten hierin: x <- as.numeric(y) test: is.numeric(y) of !is.numeric(y) (niet)
 integer(x) 0 omzetten hierin: x <- as.integer(y) test: is.integer(y)
 character(x) “” omzetten hierin: x <- as.character(y) test: is.character(y)
 logical(x) FALSE omzetten hierin: x <- as.logical(y) test: is.logical(y)

dus bv vector <- numeric(5) maakt een vector aan met vijf 0’en
dus bv vector <- character(5) maakt een vector aan met vijf “”



De functie c( ) maakt een atomic vector van de opgegeven waarden (c staat niet voor character)




 3 werd als nummer opgegeven maar de andere 2 als character, daarom wordt 3 ook een character want de 2 strings kan je niet
als numeric omzetten → moet 1 type object zijn binnen een atomic vector



Stel je moet vector maken van 6,5cm en 7,8cm → c(6.5 , 7.8)
punt voor komma gebruiken zodat , als scheidingsteken gebruikt kan worden



Andere functies naast c( ) om vectoren aan te maken → spiekbrief C



Belangrijk!! Objecten zien unmutable in R, dus altijd een nieuwe variabele toekennen eraan om verder te werken

 x <- 3
 as.character(x)
 class(x) → [1] “numeric”
 y <- as.character(x)
 class(y) → [1] “character”

,Meerdimensionale objecten

Array = meerdere dimensies en elk object is van hetzelfde type

2 soorten:

 Matrix = array met 2 dimensies
o matrix(x, ncol = y ) genereert een matrix = 2D array
▪ x = vector met data erin
▪ ncol = aantal kolommen
▪ !!kan ook nrow in de plaats doen = aantal rijen meegeven, R zal dan automatisch bepalen hoeveel kolommen
er moeten komen adhv de opgegeven vector x, of omgekeerd
▪ y = aantal
o Deze functie vult kolom per kolom op, als je rij per rij wil byrow = TRUE als argument opgeven
o dim(y) geeft de dimensie van de array weer, aangezien het hier een matrix is, is dit altijd 2
▪ dim(y) <- NULL zet de dimensie op 0 en zo wordt de array weer een vector
 Generieke array = meerdere dimensies

!!een vector is geen eendimensionale array aangezien een array een dimensie attribuut heeft, een vector niet




Data frames

Bestaat uit rijen die observaties bevat van 1 object telkens en kolommen dat variabelen bevat
Elke kolom heeft hetzelfde type object maar verschillende kolommen (variabelen) kunnen wel vercschillende types objecten hebben

 Daarom kan een matrix niet gebruikt worden
 Vandaar data.frame klasse gebruiken
 Kan het dus beschouwen als een speciale vorm van een lijst (want staat wel in matrix vorm)
waarbij elke variabele (kolom) 1 element is uit een lijst
 En die elementen moeten vectoren zijn met dezelfde lengte



Kunt dus vectoren (metingen voor een bepaalde variabele bv) combineren in een data frame om dan analyses te doen

 2 vectoren salaris en werknemers
 Dataset <- data.frame(naam = werknemers, inkomen = salaris)
 Naam en inkomen wijst op hoe je de kolom/variabele wil noemen
 Werknemers en salaris zijn vectoren die je erronder plaatst
 !!ze moeten van dezelfde lengte zijn!!
 Stel dat je gewoon de vector lengtes en geslacht samen
wil zetten, dan doe je data.frame(lengtes, geslacht)
Dan zal de vectornaam als kolomnaam gepakt worden

Lijsten

Lijst aanmaken via lijstje <- list(object1, object2, …)

Object 1 zal element 1 zijn en dus index 1 krijgen, object2 index , …



Eigenschappen van objecten → spiekbrief D

 Str(x)
 Length(x)
 Dim(x)
 Nrow(x) of ncol(x)

,Factor type

Je wil bv de vectoren werknemers en salaris samenzetten, als je bij data.frame( ) het argument stringsAsFactors = TRUE bijvoegt zal dit de
character vectoren omzetten naar een factor

Een factor = speciaal datatype voor groepen (= categorische gegevens)

Een factor is een soort vector die intern bestaat uit getallen die groepen voorstellen, met daarbovenop een lijst van labels (de
groepsnamen). Bijvoorbeeld: in plaats van de tekst “Pieter”, “Jan” of “Said” op te slaan, bewaart R eigenlijk gewoon 1, 2, 3... met een
verwijzing naar de bijbehorende groepsnaam, dus 1 = Pieter, 2 = Jan, …. → via str(x) eens bekijken




Als je een factor aanmaakt via de funcite factor( ) (ipv saveAsFactores = TRUE bij data.frame te gebruiken) kan je zelf bepalen:

• levels = de verwachte waarden in de data (inputgroepen)

• labels = de namen die je aan deze groepen wil geven (output)

Als je dit niet expliciet opgeeft, bepaalt R deze zelf aan de hand van de unieke waarden in de vector.




!!!D komt dus met Big overeen, dus volgorde aanpassen als je dat wil veranderen



Nominaal vs ordinaal

Niet alle groepen zijn gelijk: sommige categorieën hebben een natuurlijke volgorde (zoals "laag", "midden", "hoog") — dan spreek je van
een geordende factor (ordered factor). Andere groepen hebben geen volgorde (zoals "rood", "blauw", "groen") — dat zijn nominale
factoren.

Bij geordende factoren kan je in R ook gebruik maken van vergelijkingen zoals < of > tussen categorieën. → ordered factor datatype
Bij gewone (ongeordende) factoren lukt dat niet, en krijg je een foutmelding.



Ordered factor dataype

= geordende variant van factoren, dus met natuurlijke volgorde → ordend de levels (B, A, D) op volgende manier (A, B, D)
en kent dan respectievelijk elk label uit opgpegeven (small, medium, big) eraan toe

,Namen aan basis objecten geven

In R kan je een naam aan kolommen, rijen én elementen geven!!!  Python

 ze mogen net als de regels voor variabelen niet met een cijfer beginnen en geen functienaam etc hebben

names( ) vraagt de namen van de elementen van een 1D object op: vectoren, lijsten en data frames (soort lijst, lijkt 2D)

rownames( ) om de namen van de kolommen/rijen op te vragen bij 2D: matrices
colnames( )

Selecteert de namen in een vector, om de naam van een object x te wijzigen moet je er nieuwe waarden aan toe wijzen
bv names(salaris) <- werknemers zal alle elementen in salaris een “naam” geven: namelijk de namen die in de vector werknemers staan




Namen verwijderen via names(x) <- NULL

Voor data frame dus ook names( ) gebruiken maar aangezien het een speciale lijst voorstelt en elke element een variabele is (kolom in
feite) zal de functie dus aan elk element (kolom) een naam toekennen dus hiermee wijzig je in feite de kolomnaam



De functie paste0
Stel je wil in een matrix met 4 kolommen de kolomnamen naar respectievelijk x1, x2, x3 en x4 veranderen: volgend script
colnames(matrix) <- paste0(“x”, 1:4)

 colnames selecteert de namen van de kolommen
 paste0 plakt aan elke x een cijfer van 1-4
 paste0(“x”,1:4) resultaat is c("x1", "x2", "x3", "x4") dat respectievelijk de kolomnamen van de matrix aanpast



Indexering en manieren om gegevens uit een object te halen of wijzigen → spiekbrief F + hierboven

 bv: vector salaris: salaris[3] <- 43 = het element op plek 3 vervangen door 43
salaris[c(1,2)] <- 42 = c(1,2) geeft vector 1 2 → salaris[1 2] → plek 1 en 2 door 42 vervangen
= recyceling, gebruikt waarden in vector tot ze op zijn (eerst 1, dan 2)
= kun je soort van for i in c(1,2) lus zien (salaris[i] <- 42)

ipv 42 kan je ook een vector zetten zodat index 1 en 2 beide respectievelijk uit de vector een andere naam krijgen



Uitlichting spiekbrief F

 dataset[“Variabele”] selecteert de variabele (kolom) en geeft zelfde klasse terug: nl een dataframe
 dataset[[“Variabele”]] selecteert de variabele (kolom) en geeft die als een vector terug
 dataset$Variabele selecteert de volledige
 dataset[c(x,y), “Variabele”] selecteert rij x en y uit de variabele (kolom) en geeft die als een vector terug
kan dit voorkomen door dataset[c(x,y), “Variabele”, drop = FALSE]

,Belangrijke operatoren en functies voor rekenen met vectoren en matrices + spiekbrief G

Je kan vectoren optellen, aftrekken: zal componentsgeweist gebeuren = vectorisatie (als ze even lang zijn)
Stel dat je x= c(3,2,6,8) met y = c(-1, 1) vermenigvuldigd, dan zal dit ook componentsgewijs gebeuren en wanneer alle componenten van y
gebruikt zijn zal ie opnieuw starten = recycling, zelfde geldt voor optelling:

 x*y = -3 2 -6 8

 x <- c(2,3,4,5)
 y <- c(1,2)
 x+y = 2 5 5 7

!!dus goed opletten welke lengte de vectoren hebben, want R zal er geen probleem van maken



Matrices bestaan intern vectoren, 2 matrices vermenigvuldigen niet met * maar met %*%

Zie oefeningen!! Onder de knie krijgen want vormt basis voor de rest



Ook logische operatoren zoals TRUE en FALSE zijn gevectoriseerd en gebruiken recycling
vanaf je ze in berekening gebruikt wordt TRUE = 1 en FALSE = 0, zo kan je in een TRUE, FALSE vector snel tellen hoeveel TRUE erin staat door
de som te pakken:

 sum(salaris > 42) salaris > 42 maakt een ‘boolean’ van de salaris_vector met TRUE of FALSE, sum telt de 1’en (TRUE)
 [1] 1



Speciale waarden in R

 NULL numerieke waarde
 Inf en -Inf numerieke waarde
 NaN = not a number numerieke waarde
 NA = not available geen vast type → kan je dus in elk type vector gebruiken  numerieke vectoren hierboven

Deze worden allemaal zonder aanhalingstekens gebruikt, anders krijg je fouterror

 3 + NA (niet 3 + “NA” → fouterror want character met numeric proberen mixen)
 [1] NA (aangezien R niet weet wat de missende waarde is)

Bij wiskundige functies zoals sum( ) en mean( ) argument na.rm = TRUE worden missende waarden verwijderd als je de som of het
gemiddelde berekend

,Logistische vectoren en operaties

which(x operator waarde) of bv which.max( ) / which.min( ) → geeft index van waarde met max/min waarde

 Geeft de indices van welke waarden in de vector x groter, kleiner, …. Zijn dan de opgegeven waarde



Vb oef: Maak een nieuw data frame gebaseerd op birds met enkel de data van alle jonge vogels en vogels kleiner dan 6 cm

 We pakken de gevraagde kolommen eruit en schrijven een logistische verklaring uit bv < of == en kennne dit toe aan een
logitische vector
 Logistische_vector <- birds$agecat == "jong" & birds$length < 6
o & betekent en
o | betekent of
o !!! als je met vectoren werkt moet je && of || gebruiken om elementsgewijs te vergelijken
▪ (x[1] > 3 && y[1] < 15)
 Dan neuwe data frame maken via
 Nieuw <- birds[logistische_vector,]
o In de logistische vector staat nu voor elke rij TRUE of FALSE (als ze dus beide vergelijkingen voldoen of niet)
o Door [vector,] en de komma verwijs je dat je de rijen wil pakken
▪ dataframe[rijen, kolommen] met bird het data frame
o Voor elke TRUE in de vector zal die index gepakt worden en die rij index uit het dataframe pakken en overzetten
 Kon bovenstaande twee scripts ook ineensteken op deze manier



Rij verwijderen: set <- set[-index, ]

Stel je wil de rij verwijderen met de grootste waarde in de kolom length
=> id <- which.max(birds$length) → geeft de index weer (rijindex) van op welke rij de grootste waarde in lenght staat
=> birds <- birds[-id,]




Specifieke waarden in een vector aanpassen
“pas alle waarden met waarde 0 aan naar NA in de vector”

,Werkcollege 2: Werken met data

Beslaat het werken met bestanden, tekst, controlestructuren in R en het schrijven van functies



Werken met bestanden en folders

Bij inlezen van data moet je met twee zaken rekening houden

1) Het type data → bepaald hoe je er verder mee werkt
2) Het bestandsformaat → bepaald welke functie je gebruikt om in te lezen



Delimited file (df) = tekstbestand om data in op te slaan met op eerste lijn de kolomnamen (variabelen) en elke regel een observatie van
een bepaald object

Functie om in te lezen: read.tabel( ) met een paar argumenten

 “file.txt”
 sep = ___ geeft aan welk scheidingsteken gebruikt werd, default is spatie
 header = TRUE eerste lijn geïnterpreteerd als kolomnamen, dus de variabelen, default is FALSE
 stringsAsFactors = FALSE is default waarde, op TRUE controleert of je data als factor moet omgezet worden

Daarom belangrijk tekstbestand eerst eens te bekijken

Als een komma als seperator gebruikt wordt noemen we het een CSV bestand = comma seperated Value formaat
 een decimaal getal heeft een punt dat als komma dienst doet
 functie read.csv( ) gebruiken = read.table( ) functie met andere waarden bv bij sep =
 functie read.csv2( ) voor excel bestanden die in CSV zijn omgezet (; als scheidingsteken)
 stringsAsFactors = FALSE/TRUE kan je hier ook aan toevoegen


Wegschrijven van R-code naar CSV via write.csv(___, row.names = FALSE) zodat de rijnamen niet mee weggeschreven worden (niet
gewenst)



R-studio-eigen bestanden

 RDS bestand via readRDS( ) inlezen saveRDS( ) om weg te schrijven
 RDA bestand via load( ) save( )

RDA bestand zijn eigenlijk allemaal objecten dat je met load( ) allemaal direct in de global environment zet



Werken met folders

 Absoluut pad begint vanaf de drive C:/MijnDocs/Data/Test2 via getwd( )
 Relatief pad begint vanaf de huidige working directory Data/Test2



Combineren van datasets
Dit kan op 2 voorwaarden

 Elke dataset bevat dezelfde variabelen in dezelfde volgorde de observaties zijn dus in 2 datasets uitgespreid
o Rijen aan elkaar plakken via rbind( )
 Elke dataset heeft dezelfde observaties in dezelfde volgorde de variabelen zijn dus in 2 datasets uitgespreid
o Kolommen aan elkaar plakken via cbin( )

,Bij data.frames zorg je er best voor dat je variabelen van hetzelfde type en dezelfde klasse zijn, zodat je niet voor verrassingen komt te
staan. Bij factoren moet je er ook op letten dat de codering exact overeenkomt, wat wil zeggen dat beide factoren evenveel levels hebben,
en die levels op dezelfde manier gelabeld zijn.



Condities, functies en lussen voor verschullende object types

• Eendimensionale objecten zoals atomic vectors (numeric, integer, character, logical) en lists
• Meerdimensionale objecten zoals matrices
• Data frames, een object klasse die eigenlijk eendimensionaal is (een list), maar als een tweedimensionaal object kan gebruikt
worden bij indexering.

1) Condities in R

2 soorten

 Conditie testen met enkel logische waarden TRUE/FALSE als resultaat
 Conditie testen dat logische vector als resultaat geeft → practicum ¾?




• De conditie staat tussen ronde haakjes en geeft enkel een TRUE of FALSE waarde → 1ste soort
• De code die wordt uitgevoerd als het TRUE is staat tussen de eerste { }
• Door else{ } toe te voegen kan je een ander script uitvoeren op x als het de waarde FALSE heeft (optioneel)
o !! start op zelfde regel als sluit } van if




Je kan ook meerdere if-else functies aan elkaar breiden (analoog van elif in python): else if( )




Stop( ) genereert een foutmelding met hetgeen dat tussen haken staat



2) Lussen in R

For lus




• de range/het object waarover je itereert moet tussen haken staan
o bv een vector x of c(2,3,4)
o bv een range seq(4, 10, by = 2)
o bv rep(x, each = 3)
o Lijst, dataframe
• Definieer voor de for lus een allocatie-variabele toe bv totaal <- 0
o Anders wordt na 1ste lus object gemaakt, bij 2de lus een nieuw object met 2 waarden in → veel geheugen

, While lus




 Conditie bv x > y met y in de while lus
 Moet ervoor zorgen dat x al gedefinieerd is voor de while lus
 Blijft ook enkel doorgaan tot er geen TRUE meer gegenereerd wordt maar FALSE in de plaats
 Bij TRUE voert hij het script erronder uit bv y + 1



3) Functies schrijven in R




Functies in R zijn ook gewoon objecten met een waarde (de definitie) en een naam (net zoals variabelen)

!!return ding moet ook tussen haakjes staan



Optionele  verplichte argumenten
je kan bv function(x, na.rm = FALSE) doen

 Na.rm staat standaard op FALSE en is dus optioneel, als je hem op TRUE zet worden missende waarden verwijderd
 X = de vector die je meot ingeven is dan weer een verplicht argument




!ID = NOT ID = logistische vector omdraaien



Als je geen return( ) functie gebruikt zal R de laatste lijn code returnen, dsu in vb hierboven zou het niet uitmaken



Handige technieken om zaken te checken

• %in% gebruiken om te kijken of alle elementen van een vector in een andere vector zitten
bv als je moet kijken of er enkel waarden van 1 tot 5 in x voorkomen
all(x %in% c(1:5) ) , je kan een ! ervoor zetten om te kijken of er waarden zijn die er niet in voorkomen → geeft TRUE
• Which() geeft aan welke indexen aan de conditie tussen de haken voldoen → geen logische vector met TRUE en FALSE
• Any(x ____ || x ___) geeft TRUE als er aan een van de voorwaarden voor een element voldaan is
Moet met || aangezien je vectorsgewijs elk element aan beide condities onderricht

Get to know the seller

Seller avatar
Reputation scores are based on the amount of documents a seller has sold for a fee and the reviews they have received for those documents. There are three levels: Bronze, Silver and Gold. The better the reputation, the more your can rely on the quality of the sellers work.
BioEngineer Universiteit Gent
Follow You need to be logged in order to follow users or courses
Sold
75
Member since
2 year
Number of followers
7
Documents
76
Last sold
1 week ago
Bio Engineer Stach

Uitgebreide samenvattingen die telkens alles vanuit de powerpoint + extra in de les gezegd, bevatten. Daarbij probeer ik dit altijd op een overzichtelijke en mooie manier voor te stellen, want niemand heeft gezegd dat studeren saai moet zijn. Indien vragen, stuur gerust een bericht. Ik doe zelf ook nog bio-ingenieur en heb met deze samenvattingen altijd moeiteloos kunnen slagen.

4.0

3 reviews

5
1
4
1
3
1
2
0
1
0

Recently viewed by you

Why students choose Stuvia

Created by fellow students, verified by reviews

Quality you can trust: written by students who passed their tests and reviewed by others who've used these notes.

Didn't get what you expected? Choose another document

No worries! You can instantly pick a different document that better fits what you're looking for.

Pay as you like, start learning right away

No subscription, no commitments. Pay the way you're used to via credit card and download your PDF document instantly.

Student with book image

“Bought, downloaded, and aced it. It really can be that simple.”

Alisha Student

Frequently asked questions