Section 40 Reshape Data: base::reshape
40.2 Example 1: One variable
set.seed(123)
ID <- paste0('S',1:5)
Sex <- sample(x = c('M','F'), size = length(ID), replace = TRUE)
Ht1 <- sample(45:55, size = length(ID), replace = FALSE)
Ht2 <- sample(60:70, size = length(ID), replace = TRUE)
Ht3 <- sample(75:85, size = length(ID), replace = TRUE)
DF <- data.frame(ID=ID, Sex=Sex, Ht1=Ht1, Ht2=Ht2, Ht3=Ht3)
# DF
# long format
lDF <- reshape(data = DF,
varying = c('Ht1','Ht2','Ht3'),
v.names = 'Height',
times = c('1d','6m','12m'),
timevar = 'Time',
idvar = c('ID', 'Sex'),
drop = NULL,
direction = 'long',
new.row.names = 1:(3*nrow(DF)))
# wide format
wDF <- reshape(data = lDF,
timevar = 'Time',
idvar = c('ID', 'Sex'),
drop = NULL,
direction = 'wide',
sep = '_')
40.3 Example 2: Two variables
set.seed(123)
ID <- paste0('S',1:5)
Sex <- sample(x = c('M','F'), size = length(ID), replace = TRUE)
Ht1 <- sample(45:55, size = length(ID), replace = FALSE)
Ht2 <- sample(60:70, size = length(ID), replace = TRUE)
Ht3 <- sample(75:85, size = length(ID), replace = TRUE)
Wt1 <- sample(3:6, size = length(ID), replace = TRUE)
Wt2 <- sample(8:12, size = length(ID), replace = TRUE)
Wt3 <- sample(13:18, size = length(ID), replace = TRUE)
DF <- data.frame(DF, Wt1=Wt1, Wt2=Wt2, Wt3=Wt3)
DF
# long format
lDF <- reshape(data = DF,
varying = list(c('Ht1','Ht2','Ht3'),
c('Wt1','Wt2','Wt3')),
v.names = c('Height','Weight'),
times = c('1d','6m','12m'),
timevar = 'Time',
idvar = c('ID', 'Sex'),
drop = NULL,
direction = 'long',
new.row.names = 1:(3*nrow(DF)))
# wide format
wDF <- reshape(data = lDF,
timevar = 'Time',
idvar = c('ID', 'Sex'),
direction = 'wide',
sep = '_')