732G33 Programmering i R
Kursinformation
VT 2024
Senast uppdaterad 2024-03-25
Allmänt
Hemsidan är under uppdatering för VT2024.
Kurslitteratur 2024: The Book Of R av Tilman M. Davies (TD), 2016. Finns tillgänglig som e-bok via biblioteket
Detta är webbsidan för kursen i programmering med med programmeringspråket R. Denna kurs ges varje vårtermin vid Linköpings universitet. I år samläses 732G33 (programkurs) med 732G83 (fristående kurs)
Johan Alenlöv är lärare och examinator på kursen.
Använda R/Rstudio i SU-salar
Datorlaborationerna är i SU-salarna i B-huset.
Hur startar jag
Rstudio och börjar labbba i en SU-sal?
- Logga in med Liu-ID och lösenord
- Tryck: \(\texttt{Ctrl+Alt+T}\) för att öppna en terminal. Här kan du skriva olika kommandon, dessa aktiveras när du trycker enter.
- Skriv: \(\texttt{module add courses/732G33}\) och tryck enter
- Detta läser in kursmodulen, som innehåller de programvaror som behövs i kursen.
- Skriv \(\texttt{rstudio}\) i terminalen och tryck enter
Kursmaterial vecka per vecka
Allmän struktur på kursen
- Kursmaterial på kurshemsidan (denna sida)
- Föreläsningar i sal
- Kommunikation kommer att ske via Teams.
- Seminarier i sal
- Labbar:
- Görs på dator. Antingen egen eller i datorsal på Campus.
- Hjälp kommer att erbjudas under schemalagda tiden.
- Inlämningar kommer att ske på kursen kursrum på Lisam.
- Alla labbar ska redovisas muntligt för lärare/assistent
- Schema finns på timeedit
Microsoft Teams kommer användas för kommunikation, speciellt för frågor kring laborationerna. Teams är ett samarbetsverktyg, som går att använda via webbläsare eller som app på mobil/dator. Appen finns för olika plattformar. Kursen kommer att ha ett eget team, länk till teamet kommer att mailas ut och finnas på kursrummet på Lisam.
Gör följande:
- Installera skrivbordsprogammet för Teams
- Se till att du har tillgång till kursens kursrum på Lisam, detta kräver att du har ett liu-ID och är antagen på kursen.
R och Rstudio
Kursen använder R (själva programmeringsspråket) och Rstudio. Rstudio är ett program som gör det lättare att arbeta med R, en så kallad IDE. Dessa program finns förinstallerade på datorerna i datorsalarna.
Om ni vill jobba på egen dator går det bra, dessa program finns tillgängliga för Windows, Mac och Linux.
- Ladda ner och installera R här, version 4.2.1 eller högre.
- Ladda ner och installera R-Studio här, version 2022.07.1 eller högre.
Här finns videos om att installera R och R-Studio på Windows, Mac och Linux/Ubuntu
Mål
Syftet med denna kurs är att introducera enklare programmeringstekniker med särskilt fokus på programspråket R.
Innehåll
Kursen kommer behandla statistiskt programmering i R. Kursen ger en introduktion till bland annat:
- Installera och använda R / R-Studio.
- Att använda hjälpen i R / R-studio.
- Importera och exportera data
- Datastrukturer och bearbeta data
- Funktioner och dokumentation
- Programmeringsteknik
- Installera och använda R-paket
- Statistik och grafik
- Strängar och datum
- Grundläggande linjär algebra
Undervisningsmaterial och uppgifter
Kursen sträcker sig över 10 veckor, med start vecka 14 (2/4). De första 8 veckorna introducerar en ny del med kursmaterial varje vecka. Den 9:e veckan ägnas åt repetition och kompletteringar. Sista veckan är det en datortenta. När slides eller labinstruktioner är uppdaterade för 2024 så kommer det att stå "uppdaterad" efter länken.
De första 8 veckorna kommer att ha en föreläsning och en datorlaboration per vecka.
- Föreläsning Föreläsningen introducerar nya koncept och lägger grunden för datorlaborationen. Till varje föreläsning finns läsanvisningar till kursboken, olika videos och ev. extramaterial.
- Datorlaboration Denna del är den
viktigaste delen av kursen. Vid laborationerna kommer ni att
programmera och lära er lösa problem med och i R. Två delar
- Övningsuppgifter \(\rightarrow\) är mycket viktiga! Lägger grunden för inlämningsuppgifterna och tentan.
- Inlämningsuppgifter
- Seminarier Är till för frågor och interaktion. Lärare löser övningsuppgifter och svarar på frågor från studenterna.
I andra halvan av kursen kommer även ett Projekt att genomföras.
Kursen examineras genom en datortenta och 5 stycken datorlaborationer. Tentan kan ge betygen U, G och VG. Datorlaborationerna kan ge betygen U och G. För att få godkänt på kursen så måste man ha G på datorlaborationerna och tentan, för VG så behöver man även ha VG på tentan.
Återkommande kursmaterial
- Kurslitteratur: The Book Of R av Tilman M. Davies (TD), 2016. Finns tillgänglig som e-bok via biblioteket
- Google developers R videos (GD) här
- Roger Pengs R videos (RP) här
- Referenskort/Cheat sheet här
Referenslitteratur
Advanced R av Hadley Wickham. Denna (online-)bok är inte obligatorisk men kan användas för fördjupning och finns här.
Datorlaborationer
Kursen innehåller 8 datorlaborationer. Totalt 4 av dessa laborationer har inlämningsuppgifter som är obligatoriska.
Datamaterialet som används i laborationerna finns att ladda ned här.
En mall för laborationerna går att ladda ned här.
Datorlaborationerna och ev kompletteringar lämnas in på Lisam. För att få tillgång till kursrummet på Lisam så behöver en registrera sig på kursen.
För att bli godkänd på en datorlaboration krävs det att man muntligt redovisar uppgiften för en lärare / assistent.
Obs! För att ladda ner filerna från github, högerklicka på knappen Raw och välj Spara länk som . . .
Ni kan ansluta till datorsalar på campus hemifrån, se instruktioner här.
Inlämningar:
Vecka 1: Introduktion, vektorer, logik och kort om funktioner
Slides: Föreläsning 1 (Uppdaterad för VT24)
R demo:
Demo från föreläsningen F1_demo.R
Kursbok:
- INTRODUCTION
- 1.2.2 - 1.4.2
- 2
- 4.1-4.2
- 6.1.1-6.1.3
- A.1 (appendix)
- B.1 (appendix)
- Generellt kolla: Important Code in This Chapter i slutet av de berörda kapitlen
Video:
- RP:
- GD:
- Logik och logiska värden:
Datorlaboration: PDF (Uppdaterad för VT24)
Använd denna mall. Lösningar på obligatoriska uppgifter lämnas in via Lisam. Deadline för varje laboration finns angivet på Lisam. De deadlines som gäller för olika kompletteringar finns angivet längre ner på denna sida, under rubriken Kompletteringar.
Vecka 2: Datastrukturer och databearbetning, (I)nput/(O)utput
Översikt kursveckor
Denna vecka
kommer vi att titta närmare på olika datastrukturer (=sätt att
organisera data), hur vi kan hantera data och hur vi gör för att läsa
data från hårddisken till R och skriva data till hårddisken.
Slides: Föreläsning 2 (Uppdaterad för VT23)
Seminarium:
Kursbok:
- 3.1-3.2, 3.3.3-3.3.4, 3.4 Matrices and arrays
- 4.3 Factors
- 5 Lists and data.frames
- 8.1-8.3.1 Reading and writing files
- Generellt kolla: Important Code in This Chapter i slutet av de berörda kapitlen
Video:
- RP:
- GD:
Datorlaboration:
PDF (Uppdaterad för VT23)
Använd denna mall. Lösningar på obligatoriska uppgifter lämnas in via Lisam. Deadline för varje laboration finns angivet på Lisam. De deadlines som gäller för olika kompletteringar finns angivet längre ner på denna sida, under rubriken Kompletteringar.
Vecka 3: Programkontroll - villkorssatser och loopar
Denna vecka kommer studera sätt att styra programmeringskod med hjälp av villkorssatser och olika typer av loopar.
Slides: Föreläsning 3(Uppdaterad för VT23)
R demo:
Demo från föreläsningen F3_demo.R
Seminarium:
Kursbok:
- 10 Conditions and Loops
- 12.1.1
Video:
- RP:
- GD:
Datorlaboration:
PDF (Uppdaterad för VT23)
Använd denna mall. Lösningar på obligatoriska uppgifter lämnas in via Lisam. Deadline för varje laboration finns angivet på Lisam. De deadlines som gäller för olika kompletteringar finns angivet längre ner på denna sida, under rubriken Kompletteringar.
Vecka 4: Mer om funktioner, programmeringsteknik och R-paket
Denna vecka kommer vi att fördjupa oss i funktioner, hur vi skriver kod på ett bra sätt, R-paket mm.
Slides: Föreläsning 4 (Uppdaterad för VT23)
Seminarium:
Kursbok:
- 9 Calling funcitons
- 11 Writing functions
- 12 Exceptions, timings and visibility
Annan läsning:
- Best practices for scientific computing av Greg Wilson et. al. Denna artikel finns tillgänglig här.
Video:
- RP:
- GD:
- R 3.2 - The apply() Family of Functions
- R 4.1 - Basic Structure of a Function
- R 4.2 - Returning a List and Providing Default Arguments
- R 4.3 - Add a Warning or Stop the Function Execution
- R 4.4 - Passing Additional Arguments Using an Ellipsis
- R 4.5 - Make a Returned Result Invisible and Build Recursive Functions
- R 4.6 - Custom Functions With apply()
- övrigt:
Datorlaboration: PDF (Uppdaterad för VT23)
Använd denna mall, notera att det är en ny mall jämfört med tidigare veckor. Lösningar på obligatoriska uppgifter lämnas in via Lisam. Deadline för varje laboration finns angivet på Lisam. De deadlines som gäller för olika kompletteringar finns angivet längre ner på denna sida, under rubriken Kompletteringar.
Vecka 5: Grundläggande grafik, beskrivande statistik, Rmarkdown och externa datakällor
Första veckan på del 2, där vi kollar olika tillämpningar.
Denna vecka handlar om basgrafiken i R, externa datakällor och att göra rapporter med Rmarkdown + knitr.
Slides: Föreläsning 5 (uppdaterad VT2023)
R demo:
Demo från föreläsningen F5_demo.R
Intro Rmarkdown: Rmd-fil och pdf-fil Notera: Om ni till bygga/knitta/rendera en pdf-fil så behöver LaTex vara installerat på er dator. Se datorlaboration 5 för instruktioner.
Seminarium:
Uppgift som vi löste tillsammans:
Kursbok:
- Basic plotting 7.1-7.3
- Advanced plot customization 23.1-23.2, 23.4
- Common probability distributions 16
Annan läsning:
Video:
- RP:
- övrigt:
Annan läsning:
- R reference card v.2 av Matt Baggot. här
- Base-r här
- R-markdown cheat sheet här
- R-markdown reference guide här
Datorlaboration: PDF (Uppdaterad för VT23)
Notera att projekt del 1 är en del av inlämningsuppgifterna
denna vecka. Projekt del 1 har en egen inlämning på Lisam. Se Projekt för detaljer.
Använd denna mall.
Lösningar på obligatoriska uppgifter lämnas in via Lisam. Deadline för varje laboration
finns angivet på Lisam. De deadlines som gäller för olika
kompletteringar finns angivet längre ner på denna sida, under rubriken
Kompletteringar.
Vecka 6: Objektorientering (OO), linjär algebra och datumhantering
Slides: Föreläsning 6 (uppdaterad VT2023)
Lubridate:
- Från R cran: vignette
- Boken R for Data Science: 16 Dates and times
- Dates and Times Cheat Sheet här
- Dates and Times Made Easy with lubridate av Garrett Grolemund och Hadley Wickham. Artikeln finns att ladda ned här Notera att lubridate har fått vissa uppdateringar sen artikeln skrevs.
Objektorientering
- Kursbok: Understanding Types, Classes, and Coercion 6.2
- OO Länk 1
- OO Länk 2: Läs om S3
- OO Fördjupning 1
- OO Fördjupning 2
- OO Fördjupning 3
Datorlaboration: PDF (Uppdaterad för VT23)
Använd denna mall.
Lösningar på obligatoriska uppgifter lämnas in via Lisam. Deadline för varje laboration finns
angivet på Lisam. De deadlines som gäller för olika kompletteringar
finns angivet längre ner på denna sida, under rubriken Kompletteringar.
Vecka 7: ggplot2
, statistik, (linjär regression)
Slides: Föreläsning 7
R demo:
Demo från föreläsningen F7_demo.R
Seminarium:
Rmd-fil som visar hur man kan lägga till blanka mellanrum i LaTex-formler.
Uppgift + lösning finns här: länk
ggplot2:
- Video, RP:
- Kursbok: 24 Grammar of graphics
- ggplot2 Overview
- ggplot2 Data Visualization Cheat Sheet
- ggplot2 reference
Statistik:
- 13.2, 18.1-18.4 (fokusera på R-koden, ni måste inte läsa all statistik teori om ni inte vill)
- Video:
Linjär regression (frivilig fördjupning)
- Video om linjär regression (lm) del 1
- Video om linjär regression (lm) del 2
- Se avsnitt i labben om linjär regression.
- Kursboken Kap 20-22
Datorlaboration: PDF (Uppdaterad för VT23)
Använd denna mall.
Lösningar på obligatoriska uppgifter lämnas in via Lisam. Deadline för varje laboration finns
angivet på Lisam. De deadlines som gäller för olika kompletteringar
finns angivet längre ner på denna sida, under rubriken Kompletteringar.
Vecka 8: Text och strängar, modern databearbetning
(dplyr
, tidy data)
Slides: Föreläsning 8 (uppdaterad VT2023)
R demo:
Demo från föreläsningen F8_demo.R
Sammanfattning av slides för texthantering och regexp: Här
Texthantering:
- Video, RP: Regular Expressions
- stringr: modern, consistent string processing Här
- Introduction to stringr, Här
- Handling and Processing Strings in R (av Gaston Sanchez), Här Kap 1 (hela), 2 (hela), 3.1, 3.3, 4.2.1-4.2.3, 5-5.2.2, 5.2.6, 5.3.1-5.3.2, 6-6.1.3, 6.2.2, 6.4-6.4.10, 7.1, 7.2 (se även labben kaptiel 1)
- Ex på användning av stringr, kolla här
- R for Data Science: 14 Strings
Modern databearbetning
Datorlaboration: PDF (Uppdaterad för VT23)
Använd denna mall.
Lösningar på obligatoriska uppgifter lämnas in via Lisam. Deadline för varje laboration finns
angivet på Lisam. De deadlines som gäller för olika kompletteringar
finns angivet längre ner på denna sida, under rubriken Kompletteringar.
Vecka 9: Repetition och tenta
Slides: Föreläsning 9
Delar av denna tenta kommer att gås igenom under föreläsningen.
Här finns andra gamla tentor.
Övrig information
Komplettering av laborationer
Alla inlämningar, inklusive projektet, ska vara godkända för att laborationsdelen på kursen ska bli godkänd. Om ni inte får godkänt på en inlämning så kommer den markeras med komplettering i Lisam.
Följande kompletteringstillfällen finns:
- komp1: Inlämning 1-4, projekt, deadline: 2024-06-04 kl 23:59
- komp2: Inlämning 1-4, projekt, deadline: 2024-08-08 kl 23:59
- komp3: Inlämning 1-4, projekt, deadline: 2024-10-30 kl 23:59
Deadline gäller för inlämning i Lisam, kontakta Johan Alenlöv för muntlig redovisning, kan ske antingen på plats eller via Zoom/Teams.
Om ni inte har lämnat alls på en inlämning och den är stängd:
- Maila då Johan Alenlöv minst 2 dagar innan deadline så får ni er inlämning öppnad för komplettering. Ange vilka laborationer det gäller och vilken grupp som ni tillhör för laborationer på del 2 i kursen.
Vid inlämningen på Lisam: lämna in en fil per laboration. Döp filen enligt formen labb1_josad732_komp1.R om det är laboration 1 och komplettering 1. Om det är del två och ni arbetar i par döp då filen enligt formen labb5_grupp01_komp1.R Notera att kompletteringar ska skickas in under ordinarie inlämningar på Lisam för respektive inlämning
OBS: om inte alla inlämningar är godkända efter den sista kompletteringen så måste labbdelen av kursen göras om nästa gång kursen ges! Detta innebär att alla inlämningar, inklusive projektet måste göras om.
Projekt
Projektet kommer genomföras i två delar. Den första delen handlar om
att läsa in data, beskrivande statistik och R:s basgrafik. Den andra
delen behandlar databearbetning, grafik med ggplot2
och
statistik analys. Den första delen startar in i samband med laboration 5
och den andra delen startar i samband med laboration 7.
Deadline för del 1 är 9/3 - 2022 och deadline för del 2 är 23/3 - 2022.
Här finns beskrivet i detalj hur projektet ska genomföras.
Här finns en mall för projektet.
Datortenta
Kursen huvudexamination är en datortenta på 4 h.
- 2024-06-04
- 2024-08-08
- 2024-10-30
Glöm inte att anmäla er i tid! Endast anmälda studenter får plats på tentan.
Tidigare tentor finns att tillgå här.
Här finns information om datortenta i SU-salar: länk
Hjälpmedel:
Följande cheatsheets kommer finns tillgängliga på tentan:
- Baggott-refcard-v2.pdf
- base-r.pdf
- data-import-cheatsheet.pdf
- data-transformation-cheatsheet.pdf
- ggplot2-cheatsheet-2.1.pdf
- RegExCheatsheet.pdf
- rmarkdown-cheatsheet-2.0.pdf
- rmarkdown-reference.pdf
- rstudio-IDE-cheatsheet.pdf
Efter kursen
Resurser för den som vill lära sig mer efter kursen:
- R for Data Science av Garrett Grolemund och Hadley Wickham, finns här
- Advanced R av Hadley Wickham, finns här.
- R packages av Hadley Wickham, finns här.
- Några fria e-böcker om R finns här
- Här finns en massa länkar med mer lärresurser.
Personal på kursen
- Examinator och lärare: Johan Alenlöv
- Labbassistenter: Max Björklund, Edwin Johansson, Simon Jorstedt, Duc Tran
- Kursadministratör: Erika Larsson (732G33), Annelie Almquist (732G83)