# Package laden (bei jedem Öffnen von R zu Beginn des Skripts ausführen)
library("tidyverse")
Automatisiertes importieren und vorverarbeiten
Für diesen Teil benötigen Sie das R-Project complab_datawrangling_stroop
mit den 3 von Ihnen erhobenen Datensätzen des Stroop Experiments.
Setup
Stroop-Experiment data wrangling
Daten mit eigener Funktion einlesen
read_stroop = function(path){
# Code kopiert von oben
d_stroop = read_csv(path) |>
filter(!is.na(trials_test.thisN)) |>
mutate(trial = trials_test.thisN + 1) |>
select(id = participant,
trial,
word,
color,
congruent,
resp = keyResp_test_run.keys,
corr = keyResp_test_run.corr,
rt = keyResp_test_run.rt)
# ---------------------
d_stroop
}
read_stroop(path = "data/stroop_example_1.csv")
Einlesen Automatisieren
Wir benötigen eine Liste aller Daten files. Die Funktion list.files()
gibt einer liste aller Dokumente in einem Ordner zurück.
list.files(path = 'data/')
list.files(path = 'data/', pattern = 'stroop')
Um die Files einzulesen, reichen nur die Namen der Dateien nicht aus. Dazu benötigen wir die kompletten Pfade.
files = list.files(path = 'data/', pattern = 'stroop') %>%
paste('data/', ., sep = '')
Alle Files von Hand einlesen
Jedes Daten File wird einzeln eingelesen. Anschliessend müssen alle Files zusammengefügt werden. Diese Lösung ist einfach zu verstehen, ist bei vielen Dokumenten aber zu aufwändig.
file1 = files[1]
file2 = files[2]
file3 = files[3]
d1 = read_stroop(file1)
d2 = read_stroop(file2)
d3 = read_stroop(file3)
d_hand = bind_rows(d1, d2, d3)
Alle Files mit for
-Loop einlesen
Das Einlesen kann mit einem for-Loop automatisiert werden. Der Loop iteriert über alle Daten Files. Als erstes muss ein leerer Data Frame d_loop
erstellt werden. Bei jeder Iteration des Loops wird ein Daten File eingelesen und dem erstellten Data Frame d_loop
angehängt.
Alle Files mit der Funktion map()
einlesen
map()
wendet eine Funktion auf alle Elemente eines Vektors an. Der Vektor files
enthält die Pfade zu den Daten Files. Mit map()
können wir also unsere selbst erstellte Funktion read_stroop()
auf jeden Pfad anwenden. Im Anschluss müssen die Dataframes noch verbunden werden.
Die Funktion map_dfr()
macht das gleiche wie map()
fügt aber zusätzlich die einzelnen Data Frames automatisch zusammen.
d_map2 = files |>
map_dfr(read_stroop)
Kompletter Stroop Code an einem Ort
read_stroop = function(path){
d_stroop = read_csv(path) |>
filter(!is.na(trials_test.thisN)) |>
mutate(trial = trials_test.thisN + 1) |>
select(id = participant,
trial,
word,
color,
congruent,
resp = keyResp_test_run.keys,
corr = keyResp_test_run.corr,
rt = keyResp_test_run.rt)
d_stroop
}
d = list.files(path = 'data/', pattern = 'stroop') %>%
paste('data/', ., sep = '') |>
map_dfr(read_stroop)
d |> write.csv(file = "data/clean/dataset_stroop_clean.csv", row.names = FALSE) # neuer Datensatz in anderen Ordner speichern um Verdoppelung zu vermeiden
Reuse
Citation
@online{fitze,
author = {Fitze, Daniel and Wyssen, Gerda},
title = {Automatisiertes Importieren Und Vorverarbeiten},
url = {https://kogpsy.github.io/neuroscicomplabFS24//pages/chapters/datawrangling_automatisiert.html},
langid = {en}
}