diff --git a/inst/tutorials/Grundlagen/Grundlagen.Rmd b/inst/tutorials/Grundlagen/Grundlagen.Rmd index 300b4ea..0e6a0e6 100644 --- a/inst/tutorials/Grundlagen/Grundlagen.Rmd +++ b/inst/tutorials/Grundlagen/Grundlagen.Rmd @@ -746,22 +746,22 @@ grade_this({ ``` - - +
+

Zeige eine Erklärung der Lösung an

- +
- - - - +Für jede Position des Vektors `namen` wird geprüft, ob das Element ungleich zum Wert "Lisa Müller" ist. +Dazu wir der logische Operator `!=` genutzt. +Die Ausgabe ist ein Vektor mit drei Werten des Datentyps `logical`. +Somit werden genauso viele Werte ausgegeben, wie die Länge des Vektors `namen`. - - +Wenn das zu prüfende Element sich unterscheidet zu "Lisa Müller", wird der Wert `TRUE` ausgegeben, weil der Wert ungleich ist. +Wenn das zu prüfende Element identisch zu "Lisa Müller" ist, wird der Wert `FALSE` ausgegeben, weil der Wert nicht ungleich ist. - +Durch diese Abfrage wissen wir nun, welche Personen im Vektor `namen` **nicht** Lisa Müller sind. - +
`r otter::colorize("Aufgabe:", "var(--blue)")` *Beantworte die gestellte Frage mit R Code.* @@ -1025,7 +1025,7 @@ Bei Rechenoperationen führt z. B. ein `NaN` dazu, dass das Ergebnis auch ein fe # Eine Variable wird absichtlich oder unabsichtlich zu NaN variable <- NaN -# Weitere Berechnungen führen auch dazu, dass das Ergebnis zu einem fehlenden Wert wird +# Weitere Berechnungen mit führen nun auch dazu, dass das Ergebnis zu einem fehlenden Wert wird variable * 10 # Auch ein logischer Vergleich mit NaN führt hier zu einem fehlenden Wert! @@ -2379,7 +2379,7 @@ Die Übungen zu diesem Kapitel befinden sich hier: - Übergeordnete Übungen: Übungen mit einem Datensatz
-```{r setup-data, exercise=FALSE, eval=FALSE, exercise.eval=FALSE, echo=FALSE} +```{r setup-data, exercise=FALSE, eval=TRUE, exercise.eval=FALSE, echo=FALSE} set.seed(333) # fixiere alle Zufallsprozesse N <- 100 # Anzahl der Personen im Datensatz df <- data.frame( @@ -2393,22 +2393,23 @@ df <- data.frame( Hier ist der Einblick in einen klinischen Datensatz `df` (die Daten wurden simuliert). - - - - - +
+

Zeige den Code der Simulation

+
+
+
- +So wurde der Datensatz `df` simuliert: - +```{r, ref.label=I('setup-data'), eval=FALSE, echo=TRUE, exercise.eval=FALSE} - - - +``` +
+
```{r data-1, exercise=TRUE, exercise.eval=TRUE, results='hold', exercise.setup = "setup-data"} -df # so können wir den Datensatz in der Console ausgeben lassen. +# über den Objektnamen können wir den Datensatz in der Console ausgeben lassen. +df # Dies ist oft aber unpraktisch, wenn es große Datensätze sind. ``` @@ -2470,7 +2471,7 @@ df ### Einzelne Daten auswählen -Im Datensatz eine Spalte Filtern +Im Datensatz eine Spalte filtern ```{r data-12, exercise=TRUE, results='hold', exercise.setup = "setup-data"} # im Datensatz df alle Personen die jünger sind als 18 Jahre df[df$age < 18, ] # Achtung: das Komma ist zwingend erforderlich! @@ -2531,8 +2532,8 @@ Eine Übersicht über die wichtigsten Infos: | Funktionen | .csv | .rda oder .RData | .rds | |----------------------------------|-------------------------------------------------------------|-----------------------------------------|--------------------------------------| -| Speichern | write.csv() (international)
write.csv2() (deutsch & Excel) | save() | saveRDS() | -| Laden | read.csv() (international)
read.csv2() (deutsch & Excel) | load() | readRDS() | +| Speichern | write.csv() [international]
write.csv2() [deutsch & Excel] | save() | saveRDS() | +| Laden | read.csv() [international]
read.csv2() [deutsch & Excel] | load() | readRDS() | | Anzahl an gespeicherten Objekten | eins | mehrere | eins | | Verhalten beim Laden | werden einem neuen Objekt zugewiesen | werden im Environment wiederhergestellt | werden einem neuen Objekt zugewiesen | | | | | | @@ -2917,13 +2918,13 @@ for (position in 1:4) { friends_status ``` - - - +
+

Zeige die Lösung

+
- +Antwort: Wir müssten überall im Code die Zahl 4 ändern! - +
Bessere Alternative (weil flexibler): `length()` @@ -2977,14 +2978,14 @@ while (condition) { } ``` - - - +
+

Zeige die Lösung

+
- - +Es fehlt ein Abbruchkriterium in der While-Loop. +Damit läuft sie unendlich lange. - +
Wenn das Abbruch-Kriterium vergessen wird, läuft die While-Loop in eine Endlosschleife. Wenn dies passiert, muss die Ausführung gestoppt werden. @@ -3575,15 +3576,15 @@ data_health <- data.frame( data_health ``` - - - +
+

Zeige den Code der Simulation von `data_health`

+
- - +So wurde der Datensatz `data_health` simuliert: +```{r, ref.label=I('setup-df'), eval=FALSE, echo=TRUE, exercise.eval=FALSE} - - +``` +
`r otter::colorize("Aufgabe:", "var(--blue)")` *Schaue den Datensatz `data_health` an. Gebe dir dazu die letzten 7 Zeilen des Datensatzes aus.* diff --git a/inst/tutorials/Grundlagen/Grundlagen.html b/inst/tutorials/Grundlagen/Grundlagen.html index 627d6ee..9cc4849 100644 --- a/inst/tutorials/Grundlagen/Grundlagen.html +++ b/inst/tutorials/Grundlagen/Grundlagen.html @@ -922,17 +922,30 @@

Übungen

# Lösung
 namen != "Lisa Müller"
- - - - - - - - - - - +
+ +

+ Zeige eine Erklärung der Lösung +an +

+
+
+
+

Für jede Position des Vektors namen wird geprüft, ob das +Element ungleich zum Wert “Lisa Müller” ist. Dazu wir der logische +Operator != genutzt. Die Ausgabe ist ein Vektor mit drei +Werten des Datentyps logical. Somit werden genauso viele +Werte ausgegeben, wie die Länge des Vektors namen.

+

Wenn das zu prüfende Element sich unterscheidet zu “Lisa Müller”, +wird der Wert TRUE ausgegeben, weil der Wert ungleich ist. +Wenn das zu prüfende Element identisch zu “Lisa Müller” ist, wird der +Wert FALSE ausgegeben, weil der Wert nicht ungleich +ist.

+

Durch diese Abfrage wissen wir nun, welche Personen im Vektor +namen nicht Lisa Müller sind.

+
+
+
Aufgabe: Beantworte die gestellte Frage mit R Code.
Infektiöse fehlende Werte
# Eine Variable wird absichtlich oder unabsichtlich zu NaN
 variable <- NaN
 
-# Weitere Berechnungen führen auch dazu, dass das Ergebnis zu einem fehlenden Wert wird
+# Weitere Berechnungen mit führen nun auch dazu, dass das Ergebnis zu einem fehlenden Wert wird
 variable * 10
 
 # Auch ein logischer Vergleich mit NaN führt hier zu einem fehlenden Wert!
@@ -2610,20 +2623,33 @@ 

Kapitel

Hier ist der Einblick in einen klinischen Datensatz df (die Daten wurden simuliert).

- - - - - - - - - - +
+ +

+ Zeige den Code der Simulation + +

+
+
+
+

So wurde der Datensatz df simuliert:

+
set.seed(333) # fixiere alle Zufallsprozesse
+N <- 100 # Anzahl der Personen im Datensatz
+df <- data.frame(
+  sex = factor(sample(c("weiblich", "männlich", "divers", NA), N, TRUE, prob = c(0.40, 0.40, 0.10, .1))),
+  age = sample(16:60, N, TRUE),
+  treatment_group = sample(c("treatment", "control group"), N, TRUE),
+  health_rating_mental = sample(c(1:10, NA), N, TRUE),
+  health_rating_body = sample(1:10, N, TRUE)
+)
+
+
+
-
df # so können wir den Datensatz in der Console ausgeben lassen.
+
# über den Objektnamen können wir den Datensatz in der Console ausgeben lassen.
+df
 # Dies ist oft aber unpraktisch, wenn es große Datensätze sind.
- - - - - +
+ +

+ Zeige die Lösung + +

+
+
+
+

Antwort: Wir müssten überall im Code die Zahl 4 ändern!

+
+
+

Bessere Alternative (weil flexibler): length()

- - - - - - +
+ +

+ Zeige die Lösung + +

+
+
+
+

Es fehlt ein Abbruchkriterium in der While-Loop. Damit läuft sie +unendlich lange.

+
+
+

Wenn das Abbruch-Kriterium vergessen wird, läuft die While-Loop in eine Endlosschleife. Wenn dies passiert, muss die Ausführung gestoppt werden.

@@ -3860,13 +3902,34 @@

Code umschreiben (Refactoring)

Übungen mit einem Datensatz

- - - - - - - +
+ +

+ Zeige den Code der Simulation von +data_health +

+
+
+
+

So wurde der Datensatz data_health simuliert:

+
set.seed(3) # fixiere alle Zufallsprozesse
+N <- 200 # Anzahl der Personen im Datensatz
+data_health <- data.frame(
+  sex = factor(sample(c("weiblich", "männlich", "divers"), N, TRUE, prob = c(0.40, 0.40, 0.20))),
+  age = sample(16:60, N, TRUE),
+  treatment_group = sample(c("treatment", "control group"), N, TRUE),
+  health_rating_mental_1 = sample(c(1:10), N, TRUE),
+  health_rating_mental_2 = sample(c(1:10), N, TRUE),
+  health_rating_mental_3 = sample(c(1:10, NA), N, TRUE),
+  health_rating_body_1 = sample(1:10, N, TRUE),
+  health_rating_body_2 = sample(1:10, N, TRUE),
+  health_rating_body_3 = sample(1:10, N, TRUE),
+  stress_level = sample(1:7, N, TRUE)
+)
+data_health
+
+
+
Aufgabe: Schaue den Datensatz data_health an. Gebe dir dazu die letzten 7 Zeilen des Datensatzes aus. @@ -5306,7 +5369,7 @@

R Chunk (freies Üben)

" gradethis_glue_incorrect = \"{ .message } { .incorrect }\"", ")", "blue <- \"#00c4e6\""), chunk_opts = list(label = "setup", echo = FALSE, message = FALSE, warning = FALSE)), setup = NULL, - chunks = list(list(label = "na-6", code = "# Eine Variable wird absichtlich oder unabsichtlich zu NaN\nvariable <- NaN\n\n# Weitere Berechnungen führen auch dazu, dass das Ergebnis zu einem fehlenden Wert wird\nvariable * 10\n\n# Auch ein logischer Vergleich mit NaN führt hier zu einem fehlenden Wert!\nvariable == NaN", + chunks = list(list(label = "na-6", code = "# Eine Variable wird absichtlich oder unabsichtlich zu NaN\nvariable <- NaN\n\n# Weitere Berechnungen mit führen nun auch dazu, dass das Ergebnis zu einem fehlenden Wert wird\nvariable * 10\n\n# Auch ein logischer Vergleich mit NaN führt hier zu einem fehlenden Wert!\nvariable == NaN", opts = list(label = "\"na-6\"", exercise = "TRUE", results = "\"hold\""), engine = "r")), code_check = NULL, error_check = NULL, check = NULL, solution = NULL, tests = NULL, options = list( @@ -5329,7 +5392,7 @@

R Chunk (freies Üben)

exercise.error.check.code = "gradethis_error_checker()", exercise.eval = FALSE, exercise.blanks = "___", exercise.reveal_solution = TRUE, label = "na-6", exercise = TRUE, code = c("# Eine Variable wird absichtlich oder unabsichtlich zu NaN", - "variable <- NaN", "", "# Weitere Berechnungen führen auch dazu, dass das Ergebnis zu einem fehlenden Wert wird", + "variable <- NaN", "", "# Weitere Berechnungen mit führen nun auch dazu, dass das Ergebnis zu einem fehlenden Wert wird", "variable * 10", "", "# Auch ein logischer Vergleich mit NaN führt hier zu einem fehlenden Wert!", "variable == NaN"), out.width.px = 624, out.height.px = 384, params.src = "na-6, exercise=TRUE, results = \"hold\"", @@ -5501,16 +5564,16 @@

R Chunk (freies Üben)

@@ -5530,17 +5593,17 @@

R Chunk (freies Üben)

@@ -5780,16 +5843,16 @@

R Chunk (freies Üben)

@@ -5808,22 +5871,22 @@

R Chunk (freies Üben)

@@ -8465,16 +8528,16 @@

R Chunk (freies Üben)

@@ -8528,22 +8591,22 @@

R Chunk (freies Üben)

@@ -9327,8 +9390,8 @@

R Chunk (freies Üben)

echo = FALSE, message = FALSE, warning = FALSE)), setup = "set.seed(333) # fixiere alle Zufallsprozesse\nN <- 100 # Anzahl der Personen im Datensatz\ndf <- data.frame(\n sex = factor(sample(c(\"weiblich\", \"männlich\", \"divers\", NA), N, TRUE, prob = c(0.40, 0.40, 0.10, .1))),\n age = sample(16:60, N, TRUE),\n treatment_group = sample(c(\"treatment\", \"control group\"), N, TRUE),\n health_rating_mental = sample(c(1:10, NA), N, TRUE),\n health_rating_body = sample(1:10, N, TRUE)\n)", chunks = list(list(label = "setup-data", code = "set.seed(333) # fixiere alle Zufallsprozesse\nN <- 100 # Anzahl der Personen im Datensatz\ndf <- data.frame(\n sex = factor(sample(c(\"weiblich\", \"männlich\", \"divers\", NA), N, TRUE, prob = c(0.40, 0.40, 0.10, .1))),\n age = sample(16:60, N, TRUE),\n treatment_group = sample(c(\"treatment\", \"control group\"), N, TRUE),\n health_rating_mental = sample(c(1:10, NA), N, TRUE),\n health_rating_body = sample(1:10, N, TRUE)\n)", opts = list(label = "\"setup-data\"", exercise = "FALSE", - eval = "FALSE", exercise.eval = "FALSE", echo = "FALSE"), - engine = "r"), list(label = "data-1", code = "df # so können wir den Datensatz in der Console ausgeben lassen.\n# Dies ist oft aber unpraktisch, wenn es große Datensätze sind.", + eval = "TRUE", exercise.eval = "FALSE", echo = "FALSE"), + engine = "r"), list(label = "data-1", code = "# über den Objektnamen können wir den Datensatz in der Console ausgeben lassen.\ndf\n# Dies ist oft aber unpraktisch, wenn es große Datensätze sind.", opts = list(label = "\"data-1\"", exercise = "TRUE", exercise.eval = "TRUE", results = "\"hold\"", exercise.setup = "\"setup-data\""), engine = "r")), code_check = NULL, error_check = NULL, @@ -9352,8 +9415,8 @@

R Chunk (freies Üben)

exercise.error.check.code = "gradethis_error_checker()", exercise.eval = TRUE, exercise.blanks = "___", exercise.reveal_solution = TRUE, label = "data-1", exercise = TRUE, exercise.setup = "setup-data", - code = c("df # so können wir den Datensatz in der Console ausgeben lassen.", - "# Dies ist oft aber unpraktisch, wenn es große Datensätze sind." + code = c("# über den Objektnamen können wir den Datensatz in der Console ausgeben lassen.", + "df", "# Dies ist oft aber unpraktisch, wenn es große Datensätze sind." ), out.width.px = 624, out.height.px = 384, params.src = "data-1, exercise=TRUE, exercise.eval=TRUE, results='hold', exercise.setup = \"setup-data\"", fig.alt = NULL, fig.num = 0, exercise.df_print = "paged"), engine = "r", version = "4"), class = c("r", "tutorial_exercise" @@ -9386,7 +9449,7 @@

R Chunk (freies Üben)

echo = FALSE, message = FALSE, warning = FALSE)), setup = "set.seed(333) # fixiere alle Zufallsprozesse\nN <- 100 # Anzahl der Personen im Datensatz\ndf <- data.frame(\n sex = factor(sample(c(\"weiblich\", \"männlich\", \"divers\", NA), N, TRUE, prob = c(0.40, 0.40, 0.10, .1))),\n age = sample(16:60, N, TRUE),\n treatment_group = sample(c(\"treatment\", \"control group\"), N, TRUE),\n health_rating_mental = sample(c(1:10, NA), N, TRUE),\n health_rating_body = sample(1:10, N, TRUE)\n)", chunks = list(list(label = "setup-data", code = "set.seed(333) # fixiere alle Zufallsprozesse\nN <- 100 # Anzahl der Personen im Datensatz\ndf <- data.frame(\n sex = factor(sample(c(\"weiblich\", \"männlich\", \"divers\", NA), N, TRUE, prob = c(0.40, 0.40, 0.10, .1))),\n age = sample(16:60, N, TRUE),\n treatment_group = sample(c(\"treatment\", \"control group\"), N, TRUE),\n health_rating_mental = sample(c(1:10, NA), N, TRUE),\n health_rating_body = sample(1:10, N, TRUE)\n)", opts = list(label = "\"setup-data\"", exercise = "FALSE", - eval = "FALSE", exercise.eval = "FALSE", echo = "FALSE"), + eval = "TRUE", exercise.eval = "FALSE", echo = "FALSE"), engine = "r"), list(label = "data-2", code = "head(df, n = 10) # zeigt die ersten 10 Zeilen im Datensatz", opts = list(label = "\"data-2\"", exercise = "TRUE", results = "\"hold\"", exercise.setup = "\"setup-data\""), @@ -9443,7 +9506,7 @@

R Chunk (freies Üben)

echo = FALSE, message = FALSE, warning = FALSE)), setup = "set.seed(333) # fixiere alle Zufallsprozesse\nN <- 100 # Anzahl der Personen im Datensatz\ndf <- data.frame(\n sex = factor(sample(c(\"weiblich\", \"männlich\", \"divers\", NA), N, TRUE, prob = c(0.40, 0.40, 0.10, .1))),\n age = sample(16:60, N, TRUE),\n treatment_group = sample(c(\"treatment\", \"control group\"), N, TRUE),\n health_rating_mental = sample(c(1:10, NA), N, TRUE),\n health_rating_body = sample(1:10, N, TRUE)\n)", chunks = list(list(label = "setup-data", code = "set.seed(333) # fixiere alle Zufallsprozesse\nN <- 100 # Anzahl der Personen im Datensatz\ndf <- data.frame(\n sex = factor(sample(c(\"weiblich\", \"männlich\", \"divers\", NA), N, TRUE, prob = c(0.40, 0.40, 0.10, .1))),\n age = sample(16:60, N, TRUE),\n treatment_group = sample(c(\"treatment\", \"control group\"), N, TRUE),\n health_rating_mental = sample(c(1:10, NA), N, TRUE),\n health_rating_body = sample(1:10, N, TRUE)\n)", opts = list(label = "\"setup-data\"", exercise = "FALSE", - eval = "FALSE", exercise.eval = "FALSE", echo = "FALSE"), + eval = "TRUE", exercise.eval = "FALSE", echo = "FALSE"), engine = "r"), list(label = "data-3", code = "tail(df, n = 10) # zeigt die letzten 10 Zeilen im Datensatz", opts = list(label = "\"data-3\"", exercise = "TRUE", results = "\"hold\"", exercise.setup = "\"setup-data\""), @@ -9500,7 +9563,7 @@

R Chunk (freies Üben)

echo = FALSE, message = FALSE, warning = FALSE)), setup = "set.seed(333) # fixiere alle Zufallsprozesse\nN <- 100 # Anzahl der Personen im Datensatz\ndf <- data.frame(\n sex = factor(sample(c(\"weiblich\", \"männlich\", \"divers\", NA), N, TRUE, prob = c(0.40, 0.40, 0.10, .1))),\n age = sample(16:60, N, TRUE),\n treatment_group = sample(c(\"treatment\", \"control group\"), N, TRUE),\n health_rating_mental = sample(c(1:10, NA), N, TRUE),\n health_rating_body = sample(1:10, N, TRUE)\n)", chunks = list(list(label = "setup-data", code = "set.seed(333) # fixiere alle Zufallsprozesse\nN <- 100 # Anzahl der Personen im Datensatz\ndf <- data.frame(\n sex = factor(sample(c(\"weiblich\", \"männlich\", \"divers\", NA), N, TRUE, prob = c(0.40, 0.40, 0.10, .1))),\n age = sample(16:60, N, TRUE),\n treatment_group = sample(c(\"treatment\", \"control group\"), N, TRUE),\n health_rating_mental = sample(c(1:10, NA), N, TRUE),\n health_rating_body = sample(1:10, N, TRUE)\n)", opts = list(label = "\"setup-data\"", exercise = "FALSE", - eval = "FALSE", exercise.eval = "FALSE", echo = "FALSE"), + eval = "TRUE", exercise.eval = "FALSE", echo = "FALSE"), engine = "r"), list(label = "data-4", code = "summary(df)", opts = list(label = "\"data-4\"", exercise = "TRUE", results = "\"hold\"", exercise.setup = "\"setup-data\""), @@ -9557,7 +9620,7 @@

R Chunk (freies Üben)

echo = FALSE, message = FALSE, warning = FALSE)), setup = "set.seed(333) # fixiere alle Zufallsprozesse\nN <- 100 # Anzahl der Personen im Datensatz\ndf <- data.frame(\n sex = factor(sample(c(\"weiblich\", \"männlich\", \"divers\", NA), N, TRUE, prob = c(0.40, 0.40, 0.10, .1))),\n age = sample(16:60, N, TRUE),\n treatment_group = sample(c(\"treatment\", \"control group\"), N, TRUE),\n health_rating_mental = sample(c(1:10, NA), N, TRUE),\n health_rating_body = sample(1:10, N, TRUE)\n)", chunks = list(list(label = "setup-data", code = "set.seed(333) # fixiere alle Zufallsprozesse\nN <- 100 # Anzahl der Personen im Datensatz\ndf <- data.frame(\n sex = factor(sample(c(\"weiblich\", \"männlich\", \"divers\", NA), N, TRUE, prob = c(0.40, 0.40, 0.10, .1))),\n age = sample(16:60, N, TRUE),\n treatment_group = sample(c(\"treatment\", \"control group\"), N, TRUE),\n health_rating_mental = sample(c(1:10, NA), N, TRUE),\n health_rating_body = sample(1:10, N, TRUE)\n)", opts = list(label = "\"setup-data\"", exercise = "FALSE", - eval = "FALSE", exercise.eval = "FALSE", echo = "FALSE"), + eval = "TRUE", exercise.eval = "FALSE", echo = "FALSE"), engine = "r"), list(label = "data-5", code = "psych::describe(df)", opts = list(label = "\"data-5\"", exercise = "TRUE", results = "\"hold\"", exercise.setup = "\"setup-data\""), @@ -9614,7 +9677,7 @@

R Chunk (freies Üben)

echo = FALSE, message = FALSE, warning = FALSE)), setup = "set.seed(333) # fixiere alle Zufallsprozesse\nN <- 100 # Anzahl der Personen im Datensatz\ndf <- data.frame(\n sex = factor(sample(c(\"weiblich\", \"männlich\", \"divers\", NA), N, TRUE, prob = c(0.40, 0.40, 0.10, .1))),\n age = sample(16:60, N, TRUE),\n treatment_group = sample(c(\"treatment\", \"control group\"), N, TRUE),\n health_rating_mental = sample(c(1:10, NA), N, TRUE),\n health_rating_body = sample(1:10, N, TRUE)\n)", chunks = list(list(label = "setup-data", code = "set.seed(333) # fixiere alle Zufallsprozesse\nN <- 100 # Anzahl der Personen im Datensatz\ndf <- data.frame(\n sex = factor(sample(c(\"weiblich\", \"männlich\", \"divers\", NA), N, TRUE, prob = c(0.40, 0.40, 0.10, .1))),\n age = sample(16:60, N, TRUE),\n treatment_group = sample(c(\"treatment\", \"control group\"), N, TRUE),\n health_rating_mental = sample(c(1:10, NA), N, TRUE),\n health_rating_body = sample(1:10, N, TRUE)\n)", opts = list(label = "\"setup-data\"", exercise = "FALSE", - eval = "FALSE", exercise.eval = "FALSE", echo = "FALSE"), + eval = "TRUE", exercise.eval = "FALSE", echo = "FALSE"), engine = "r"), list(label = "data-6", code = "rowSums(is.na(df)) # Anzahl von fehlenden Werten pro Zeile (eine Zeile ist eine Person)", opts = list(label = "\"data-6\"", exercise = "TRUE", results = "\"hold\"", exercise.setup = "\"setup-data\""), @@ -9671,7 +9734,7 @@

R Chunk (freies Üben)

echo = FALSE, message = FALSE, warning = FALSE)), setup = "set.seed(333) # fixiere alle Zufallsprozesse\nN <- 100 # Anzahl der Personen im Datensatz\ndf <- data.frame(\n sex = factor(sample(c(\"weiblich\", \"männlich\", \"divers\", NA), N, TRUE, prob = c(0.40, 0.40, 0.10, .1))),\n age = sample(16:60, N, TRUE),\n treatment_group = sample(c(\"treatment\", \"control group\"), N, TRUE),\n health_rating_mental = sample(c(1:10, NA), N, TRUE),\n health_rating_body = sample(1:10, N, TRUE)\n)", chunks = list(list(label = "setup-data", code = "set.seed(333) # fixiere alle Zufallsprozesse\nN <- 100 # Anzahl der Personen im Datensatz\ndf <- data.frame(\n sex = factor(sample(c(\"weiblich\", \"männlich\", \"divers\", NA), N, TRUE, prob = c(0.40, 0.40, 0.10, .1))),\n age = sample(16:60, N, TRUE),\n treatment_group = sample(c(\"treatment\", \"control group\"), N, TRUE),\n health_rating_mental = sample(c(1:10, NA), N, TRUE),\n health_rating_body = sample(1:10, N, TRUE)\n)", opts = list(label = "\"setup-data\"", exercise = "FALSE", - eval = "FALSE", exercise.eval = "FALSE", echo = "FALSE"), + eval = "TRUE", exercise.eval = "FALSE", echo = "FALSE"), engine = "r"), list(label = "data-7", code = "colSums(is.na(df)) # Anzahl der fehlenden Werte pro Spalte", opts = list(label = "\"data-7\"", exercise = "TRUE", results = "\"hold\"", exercise.setup = "\"setup-data\""), @@ -9728,7 +9791,7 @@

R Chunk (freies Üben)

echo = FALSE, message = FALSE, warning = FALSE)), setup = "set.seed(333) # fixiere alle Zufallsprozesse\nN <- 100 # Anzahl der Personen im Datensatz\ndf <- data.frame(\n sex = factor(sample(c(\"weiblich\", \"männlich\", \"divers\", NA), N, TRUE, prob = c(0.40, 0.40, 0.10, .1))),\n age = sample(16:60, N, TRUE),\n treatment_group = sample(c(\"treatment\", \"control group\"), N, TRUE),\n health_rating_mental = sample(c(1:10, NA), N, TRUE),\n health_rating_body = sample(1:10, N, TRUE)\n)", chunks = list(list(label = "setup-data", code = "set.seed(333) # fixiere alle Zufallsprozesse\nN <- 100 # Anzahl der Personen im Datensatz\ndf <- data.frame(\n sex = factor(sample(c(\"weiblich\", \"männlich\", \"divers\", NA), N, TRUE, prob = c(0.40, 0.40, 0.10, .1))),\n age = sample(16:60, N, TRUE),\n treatment_group = sample(c(\"treatment\", \"control group\"), N, TRUE),\n health_rating_mental = sample(c(1:10, NA), N, TRUE),\n health_rating_body = sample(1:10, N, TRUE)\n)", opts = list(label = "\"setup-data\"", exercise = "FALSE", - eval = "FALSE", exercise.eval = "FALSE", echo = "FALSE"), + eval = "TRUE", exercise.eval = "FALSE", echo = "FALSE"), engine = "r"), list(label = "data-8", code = "complete.cases(df) # Prüft, ob alle Spalten ausgefüllt wurden pro Zeile", opts = list(label = "\"data-8\"", exercise = "TRUE", results = "\"hold\"", exercise.setup = "\"setup-data\""), @@ -9785,7 +9848,7 @@

R Chunk (freies Üben)

echo = FALSE, message = FALSE, warning = FALSE)), setup = "set.seed(333) # fixiere alle Zufallsprozesse\nN <- 100 # Anzahl der Personen im Datensatz\ndf <- data.frame(\n sex = factor(sample(c(\"weiblich\", \"männlich\", \"divers\", NA), N, TRUE, prob = c(0.40, 0.40, 0.10, .1))),\n age = sample(16:60, N, TRUE),\n treatment_group = sample(c(\"treatment\", \"control group\"), N, TRUE),\n health_rating_mental = sample(c(1:10, NA), N, TRUE),\n health_rating_body = sample(1:10, N, TRUE)\n)", chunks = list(list(label = "setup-data", code = "set.seed(333) # fixiere alle Zufallsprozesse\nN <- 100 # Anzahl der Personen im Datensatz\ndf <- data.frame(\n sex = factor(sample(c(\"weiblich\", \"männlich\", \"divers\", NA), N, TRUE, prob = c(0.40, 0.40, 0.10, .1))),\n age = sample(16:60, N, TRUE),\n treatment_group = sample(c(\"treatment\", \"control group\"), N, TRUE),\n health_rating_mental = sample(c(1:10, NA), N, TRUE),\n health_rating_body = sample(1:10, N, TRUE)\n)", opts = list(label = "\"setup-data\"", exercise = "FALSE", - eval = "FALSE", exercise.eval = "FALSE", echo = "FALSE"), + eval = "TRUE", exercise.eval = "FALSE", echo = "FALSE"), engine = "r"), list(label = "data-9", code = "df[!complete.cases(df), ] # Zeigt die Daten, die fehlende Werte enthalten", opts = list(label = "\"data-9\"", exercise = "TRUE", results = "\"hold\"", exercise.setup = "\"setup-data\""), @@ -9842,7 +9905,7 @@

R Chunk (freies Üben)

echo = FALSE, message = FALSE, warning = FALSE)), setup = "set.seed(333) # fixiere alle Zufallsprozesse\nN <- 100 # Anzahl der Personen im Datensatz\ndf <- data.frame(\n sex = factor(sample(c(\"weiblich\", \"männlich\", \"divers\", NA), N, TRUE, prob = c(0.40, 0.40, 0.10, .1))),\n age = sample(16:60, N, TRUE),\n treatment_group = sample(c(\"treatment\", \"control group\"), N, TRUE),\n health_rating_mental = sample(c(1:10, NA), N, TRUE),\n health_rating_body = sample(1:10, N, TRUE)\n)", chunks = list(list(label = "setup-data", code = "set.seed(333) # fixiere alle Zufallsprozesse\nN <- 100 # Anzahl der Personen im Datensatz\ndf <- data.frame(\n sex = factor(sample(c(\"weiblich\", \"männlich\", \"divers\", NA), N, TRUE, prob = c(0.40, 0.40, 0.10, .1))),\n age = sample(16:60, N, TRUE),\n treatment_group = sample(c(\"treatment\", \"control group\"), N, TRUE),\n health_rating_mental = sample(c(1:10, NA), N, TRUE),\n health_rating_body = sample(1:10, N, TRUE)\n)", opts = list(label = "\"setup-data\"", exercise = "FALSE", - eval = "FALSE", exercise.eval = "FALSE", echo = "FALSE"), + eval = "TRUE", exercise.eval = "FALSE", echo = "FALSE"), engine = "r"), list(label = "data-10", code = "df[complete.cases(df), ] # Zeigt die Daten, die keine fehlenden Werte enthalten", opts = list(label = "\"data-10\"", exercise = "TRUE", results = "\"hold\"", exercise.setup = "\"setup-data\""), @@ -9899,7 +9962,7 @@

R Chunk (freies Üben)

echo = FALSE, message = FALSE, warning = FALSE)), setup = "set.seed(333) # fixiere alle Zufallsprozesse\nN <- 100 # Anzahl der Personen im Datensatz\ndf <- data.frame(\n sex = factor(sample(c(\"weiblich\", \"männlich\", \"divers\", NA), N, TRUE, prob = c(0.40, 0.40, 0.10, .1))),\n age = sample(16:60, N, TRUE),\n treatment_group = sample(c(\"treatment\", \"control group\"), N, TRUE),\n health_rating_mental = sample(c(1:10, NA), N, TRUE),\n health_rating_body = sample(1:10, N, TRUE)\n)", chunks = list(list(label = "setup-data", code = "set.seed(333) # fixiere alle Zufallsprozesse\nN <- 100 # Anzahl der Personen im Datensatz\ndf <- data.frame(\n sex = factor(sample(c(\"weiblich\", \"männlich\", \"divers\", NA), N, TRUE, prob = c(0.40, 0.40, 0.10, .1))),\n age = sample(16:60, N, TRUE),\n treatment_group = sample(c(\"treatment\", \"control group\"), N, TRUE),\n health_rating_mental = sample(c(1:10, NA), N, TRUE),\n health_rating_body = sample(1:10, N, TRUE)\n)", opts = list(label = "\"setup-data\"", exercise = "FALSE", - eval = "FALSE", exercise.eval = "FALSE", echo = "FALSE"), + eval = "TRUE", exercise.eval = "FALSE", echo = "FALSE"), engine = "r"), list(label = "data-11", code = "df <- na.omit(df) # Entfernt alle Zeilen mit fehlenden Werten\ndf", opts = list(label = "\"data-11\"", exercise = "TRUE", results = "\"hold\"", exercise.setup = "\"setup-data\""), @@ -9956,7 +10019,7 @@

R Chunk (freies Üben)

echo = FALSE, message = FALSE, warning = FALSE)), setup = "set.seed(333) # fixiere alle Zufallsprozesse\nN <- 100 # Anzahl der Personen im Datensatz\ndf <- data.frame(\n sex = factor(sample(c(\"weiblich\", \"männlich\", \"divers\", NA), N, TRUE, prob = c(0.40, 0.40, 0.10, .1))),\n age = sample(16:60, N, TRUE),\n treatment_group = sample(c(\"treatment\", \"control group\"), N, TRUE),\n health_rating_mental = sample(c(1:10, NA), N, TRUE),\n health_rating_body = sample(1:10, N, TRUE)\n)", chunks = list(list(label = "setup-data", code = "set.seed(333) # fixiere alle Zufallsprozesse\nN <- 100 # Anzahl der Personen im Datensatz\ndf <- data.frame(\n sex = factor(sample(c(\"weiblich\", \"männlich\", \"divers\", NA), N, TRUE, prob = c(0.40, 0.40, 0.10, .1))),\n age = sample(16:60, N, TRUE),\n treatment_group = sample(c(\"treatment\", \"control group\"), N, TRUE),\n health_rating_mental = sample(c(1:10, NA), N, TRUE),\n health_rating_body = sample(1:10, N, TRUE)\n)", opts = list(label = "\"setup-data\"", exercise = "FALSE", - eval = "FALSE", exercise.eval = "FALSE", echo = "FALSE"), + eval = "TRUE", exercise.eval = "FALSE", echo = "FALSE"), engine = "r"), list(label = "data-12", code = "# im Datensatz df alle Personen die jünger sind als 18 Jahre\ndf[df$age < 18, ] # Achtung: das Komma ist zwingend erforderlich!", opts = list(label = "\"data-12\"", exercise = "TRUE", results = "\"hold\"", exercise.setup = "\"setup-data\""), @@ -10014,7 +10077,7 @@

R Chunk (freies Üben)

echo = FALSE, message = FALSE, warning = FALSE)), setup = "set.seed(333) # fixiere alle Zufallsprozesse\nN <- 100 # Anzahl der Personen im Datensatz\ndf <- data.frame(\n sex = factor(sample(c(\"weiblich\", \"männlich\", \"divers\", NA), N, TRUE, prob = c(0.40, 0.40, 0.10, .1))),\n age = sample(16:60, N, TRUE),\n treatment_group = sample(c(\"treatment\", \"control group\"), N, TRUE),\n health_rating_mental = sample(c(1:10, NA), N, TRUE),\n health_rating_body = sample(1:10, N, TRUE)\n)", chunks = list(list(label = "setup-data", code = "set.seed(333) # fixiere alle Zufallsprozesse\nN <- 100 # Anzahl der Personen im Datensatz\ndf <- data.frame(\n sex = factor(sample(c(\"weiblich\", \"männlich\", \"divers\", NA), N, TRUE, prob = c(0.40, 0.40, 0.10, .1))),\n age = sample(16:60, N, TRUE),\n treatment_group = sample(c(\"treatment\", \"control group\"), N, TRUE),\n health_rating_mental = sample(c(1:10, NA), N, TRUE),\n health_rating_body = sample(1:10, N, TRUE)\n)", opts = list(label = "\"setup-data\"", exercise = "FALSE", - eval = "FALSE", exercise.eval = "FALSE", echo = "FALSE"), + eval = "TRUE", exercise.eval = "FALSE", echo = "FALSE"), engine = "r"), list(label = "data-13", code = "# Im Datensatz df alle Personen die jünger sind als 18 Jahre\n# und sich in der Treatment-Gruppe befinden\ndf[df$age < 18 & df$treatment_group == \"treatment\", ]", opts = list(label = "\"data-13\"", exercise = "TRUE", results = "\"hold\"", exercise.setup = "\"setup-data\""), @@ -10072,7 +10135,7 @@

R Chunk (freies Üben)

echo = FALSE, message = FALSE, warning = FALSE)), setup = "set.seed(333) # fixiere alle Zufallsprozesse\nN <- 100 # Anzahl der Personen im Datensatz\ndf <- data.frame(\n sex = factor(sample(c(\"weiblich\", \"männlich\", \"divers\", NA), N, TRUE, prob = c(0.40, 0.40, 0.10, .1))),\n age = sample(16:60, N, TRUE),\n treatment_group = sample(c(\"treatment\", \"control group\"), N, TRUE),\n health_rating_mental = sample(c(1:10, NA), N, TRUE),\n health_rating_body = sample(1:10, N, TRUE)\n)", chunks = list(list(label = "setup-data", code = "set.seed(333) # fixiere alle Zufallsprozesse\nN <- 100 # Anzahl der Personen im Datensatz\ndf <- data.frame(\n sex = factor(sample(c(\"weiblich\", \"männlich\", \"divers\", NA), N, TRUE, prob = c(0.40, 0.40, 0.10, .1))),\n age = sample(16:60, N, TRUE),\n treatment_group = sample(c(\"treatment\", \"control group\"), N, TRUE),\n health_rating_mental = sample(c(1:10, NA), N, TRUE),\n health_rating_body = sample(1:10, N, TRUE)\n)", opts = list(label = "\"setup-data\"", exercise = "FALSE", - eval = "FALSE", exercise.eval = "FALSE", echo = "FALSE"), + eval = "TRUE", exercise.eval = "FALSE", echo = "FALSE"), engine = "r"), list(label = "data-14", code = "# Im Datensatz df in der Spalte sex,\n# alle Personen die sich in der Treatment-Gruppe befinden.\ndf$sex[df$treatment_group == \"treatment\"]", opts = list(label = "\"data-14\"", exercise = "TRUE", results = "\"hold\"", exercise.setup = "\"setup-data\""), @@ -10130,7 +10193,7 @@

R Chunk (freies Üben)

echo = FALSE, message = FALSE, warning = FALSE)), setup = "set.seed(333) # fixiere alle Zufallsprozesse\nN <- 100 # Anzahl der Personen im Datensatz\ndf <- data.frame(\n sex = factor(sample(c(\"weiblich\", \"männlich\", \"divers\", NA), N, TRUE, prob = c(0.40, 0.40, 0.10, .1))),\n age = sample(16:60, N, TRUE),\n treatment_group = sample(c(\"treatment\", \"control group\"), N, TRUE),\n health_rating_mental = sample(c(1:10, NA), N, TRUE),\n health_rating_body = sample(1:10, N, TRUE)\n)", chunks = list(list(label = "setup-data", code = "set.seed(333) # fixiere alle Zufallsprozesse\nN <- 100 # Anzahl der Personen im Datensatz\ndf <- data.frame(\n sex = factor(sample(c(\"weiblich\", \"männlich\", \"divers\", NA), N, TRUE, prob = c(0.40, 0.40, 0.10, .1))),\n age = sample(16:60, N, TRUE),\n treatment_group = sample(c(\"treatment\", \"control group\"), N, TRUE),\n health_rating_mental = sample(c(1:10, NA), N, TRUE),\n health_rating_body = sample(1:10, N, TRUE)\n)", opts = list(label = "\"setup-data\"", exercise = "FALSE", - eval = "FALSE", exercise.eval = "FALSE", echo = "FALSE"), + eval = "TRUE", exercise.eval = "FALSE", echo = "FALSE"), engine = "r"), list(label = "data-15", code = "# ersetze alle fehlenden Geschlechter durch \"weiblich\"\ndf$sex[is.na(df$sex)] <- \"weiblich\" \ndf", opts = list(label = "\"data-15\"", exercise = "TRUE", results = "\"hold\"", exercise.setup = "\"setup-data\""), @@ -10188,7 +10251,7 @@

R Chunk (freies Üben)

echo = FALSE, message = FALSE, warning = FALSE)), setup = "set.seed(333) # fixiere alle Zufallsprozesse\nN <- 100 # Anzahl der Personen im Datensatz\ndf <- data.frame(\n sex = factor(sample(c(\"weiblich\", \"männlich\", \"divers\", NA), N, TRUE, prob = c(0.40, 0.40, 0.10, .1))),\n age = sample(16:60, N, TRUE),\n treatment_group = sample(c(\"treatment\", \"control group\"), N, TRUE),\n health_rating_mental = sample(c(1:10, NA), N, TRUE),\n health_rating_body = sample(1:10, N, TRUE)\n)", chunks = list(list(label = "setup-data", code = "set.seed(333) # fixiere alle Zufallsprozesse\nN <- 100 # Anzahl der Personen im Datensatz\ndf <- data.frame(\n sex = factor(sample(c(\"weiblich\", \"männlich\", \"divers\", NA), N, TRUE, prob = c(0.40, 0.40, 0.10, .1))),\n age = sample(16:60, N, TRUE),\n treatment_group = sample(c(\"treatment\", \"control group\"), N, TRUE),\n health_rating_mental = sample(c(1:10, NA), N, TRUE),\n health_rating_body = sample(1:10, N, TRUE)\n)", opts = list(label = "\"setup-data\"", exercise = "FALSE", - eval = "FALSE", exercise.eval = "FALSE", echo = "FALSE"), + eval = "TRUE", exercise.eval = "FALSE", echo = "FALSE"), engine = "r"), list(label = "data-16", code = "# addiere alle Werte der health_ratings miteinander\n# und erzeguge eine neue Spalte namens health_rating_sum\ndf$health_rating_sum <- df$health_rating_mental + df$health_rating_body\n\ndf$health_rating_sum", opts = list(label = "\"data-16\"", exercise = "TRUE", results = "\"hold\"", exercise.setup = "\"setup-data\""), @@ -12608,7 +12671,7 @@

R Chunk (freies Üben)

diff --git a/inst/tutorials/Grundlagen/css/style.css b/inst/tutorials/Grundlagen/css/style.css index 593fded..ef79f03 100644 --- a/inst/tutorials/Grundlagen/css/style.css +++ b/inst/tutorials/Grundlagen/css/style.css @@ -30,6 +30,34 @@ original is from: https://github.com/tidymodels/learntidymodels/tree/main/inst/t border-color: #CA225E; } +/* Default
styling */ +details { + margin: 0; /* Remove default margins */ + padding: 0; /* Remove default padding */ + background-color: transparent; /* No background when closed */ + border: none; +} + +/* Styling for */ +details summary { + margin: 0; /* Remove margins */ + /* padding: 10px; Add padding for the button area */ + background-color: transparent; /* No background when not clicked or hovered */ + cursor: pointer; /* Pointer for interactivity */ + transition: background-color 0.3s; /* Smooth background transition */ +} + +/* When details is open */ +details[open] { + background-color: #f2f2f2; /* Grey background when open */ +} + +/* When hovering over the summary */ +details summary:hover { + background-color: #f2f2f2; /* Grey background on hover */ +} + + .solution-button { color: #00c4e6; cursor: pointer; @@ -43,7 +71,7 @@ original is from: https://github.com/tidymodels/learntidymodels/tree/main/inst/t .hiddendetails-button { - /*background-color: green;*/ + background-color: white; color: #00c4e6; padding: 10px; border: none;