Eine Lösung mit dplyr
und tidyr
.
Zuerst erstellen wir einen Beispieldatenrahmen. Dieser Datenrahmen enthält T1
und T3
Daten von zwei Teilnehmern A
und B
.
# Set the seed for reproducibility
set.seed(123)
# Create an example data frame
dt <- data.frame(ID = 1:10,
A_T1 = runif(10),
A_T3 = runif(10),
B_T1 = runif(10),
B_T3 = runif(10))
dt
# ID A_T1 A_T3 B_T1 B_T3
# 1 1 0.2875775 0.95683335 0.8895393 0.96302423
# 2 2 0.7883051 0.45333416 0.6928034 0.90229905
# 3 3 0.4089769 0.67757064 0.6405068 0.69070528
# 4 4 0.8830174 0.57263340 0.9942698 0.79546742
# 5 5 0.9404673 0.10292468 0.6557058 0.02461368
# 6 6 0.0455565 0.89982497 0.7085305 0.47779597
# 7 7 0.5281055 0.24608773 0.5440660 0.75845954
# 8 8 0.8924190 0.04205953 0.5941420 0.21640794
# 9 9 0.5514350 0.32792072 0.2891597 0.31818101
# 10 10 0.4566147 0.95450365 0.1471136 0.23162579
Wir dplyr
und tidyr
verwenden, um den Datenrahmen von Wide-Format zu langen Format und führen Sie den Vorgang zu konvertieren. Diff
ist der Unterschied zwischen T1
und T3
.
# Load packages
library(dplyr)
library(tidyr)
dt2 <- dt %>%
gather(Column, Value, -ID) %>%
separate(Column, into = c("Participant", "Group")) %>%
spread(Group, Value) %>%
mutate(Diff = T1 - T3)
dt2
# ID Participant T1 T3 Diff
# 1 1 A 0.2875775 0.95683335 -0.66925583
# 2 1 B 0.8895393 0.96302423 -0.07348492
# 3 2 A 0.7883051 0.45333416 0.33497098
# 4 2 B 0.6928034 0.90229905 -0.20949564
# 5 3 A 0.4089769 0.67757064 -0.26859371
# 6 3 B 0.6405068 0.69070528 -0.05019846
# 7 4 A 0.8830174 0.57263340 0.31038400
# 8 4 B 0.9942698 0.79546742 0.19880236
# 9 5 A 0.9404673 0.10292468 0.83754260
# 10 5 B 0.6557058 0.02461368 0.63109211
# 11 6 A 0.0455565 0.89982497 -0.85426847
# 12 6 B 0.7085305 0.47779597 0.23073450
# 13 7 A 0.5281055 0.24608773 0.28201775
# 14 7 B 0.5440660 0.75845954 -0.21439351
# 15 8 A 0.8924190 0.04205953 0.85035951
# 16 8 B 0.5941420 0.21640794 0.37773408
# 17 9 A 0.5514350 0.32792072 0.22351430
# 18 9 B 0.2891597 0.31818101 -0.02902127
# 19 10 A 0.4566147 0.95450365 -0.49788891
# 20 10 B 0.1471136 0.23162579 -0.08451214
Wenn das ursprüngliche Format erwünscht ist, können wir spread
den Datenrahmen zu dem ursprünglichen Format weiter.
dt3 <- dt2 %>%
select(-starts_with("T")) %>%
spread(Participant, Diff)
dt3
# ID A B
# 1 1 -0.6692558 -0.07348492
# 2 2 0.3349710 -0.20949564
# 3 3 -0.2685937 -0.05019846
# 4 4 0.3103840 0.19880236
# 5 5 0.8375426 0.63109211
# 6 6 -0.8542685 0.23073450
# 7 7 0.2820178 -0.21439351
# 8 8 0.8503595 0.37773408
# 9 9 0.2235143 -0.02902127
# 10 10 -0.4978889 -0.08451214
Versuchen 'cbind (DF1, df1 [grep ("_ T1", Namen (df1))] - df1 [grep ("_ T3", Namen (df1))]) vorausgesetzt, sie sind in der Reihenfolge – akrun
Bitte sehen Sie meine Antwort. Beim nächsten Mal fügen Sie bitte ein reproduzierbares Beispiel Ihres Datasets hinzu (https://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example-aka-mcve-minimal-complete-and- ver) und die gewünschte Ausgabe, wenn Sie eine Frage stellen. – www