使用的解决方案
dplyr
和
tidyr
.
首先,让我们创建一个示例数据帧。此数据框包含
T1
和
T3
A
和
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
我们可以使用
dplyr
和
三年
将数据帧从宽格式转换为长格式并执行操作。
Diff
两者的区别是什么
T1
和
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
如果需要原始格式,我们可以进一步
spread
将数据帧转换为原始格式。
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