I have the following sample data of 10 cases with three repeated measures for two dependent variables "Rapport" and "STRS":
structure(list(SubID = structure(1:10, .Label = c("1", "2", "3",
"4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15",
"16", "17", "18", "19", "20", "21", "22", "23", "24", "25", "26",
"27", "28", "29", "30", "31", "32", "33", "34", "35", "36", "37",
"38", "39", "40", "41", "42", "43", "44", "45", "46", "47", "48",
"49", "50", "51", "52", "53", "54", "55", "56", "57", "58", "59",
"60", "61", "62", "63", "64", "65", "66", "67", "68", "69", "70",
"71", "72", "73", "74", "75", "76", "77", "78", "79", "80", "81",
"82", "83", "84"), class = "factor"), Gender = structure(c(3L,
2L, 3L, 2L, 3L, 2L, 3L, 2L, 3L, 2L), .Label = c("#NULL!", "1",
"2"), class = "factor"), Age = structure(c(5L, 3L, 2L, 2L, 3L,
5L, 5L, 2L, 2L, 3L), .Label = c("#NULL!", "10", "11", "8", "9"
), class = "factor"), Rapport.1 = structure(c(22L, 25L, 19L,
10L, 18L, 19L, 20L, 20L, 21L, 16L), .Label = c("#NULL!", "1.1",
"1.85", "2.45", "2.5", "2.55", "2.6", "2.75", "2.8", "2.85",
"2.9", "2.95", "3.2", "3.25", "3.3", "3.35", "3.4", "3.45", "3.5",
"3.55", "3.6", "3.65", "3.7", "3.75", "3.8", "3.85", "3.9", "3.95"
), class = "factor"), Rapport.2 = structure(c(29L, 31L, 27L,
17L, 9L, 26L, 24L, 21L, 30L, 32L), .Label = c("#NULL!", "1.25",
"1.4", "1.6", "1.95", "2.05", "2.3", "2.35", "2.45", "2.5", "2.65",
"2.7", "2.75", "2.8", "2.85", "3", "3.05", "3.1", "3.15", "3.2",
"3.35", "3.4", "3.45", "3.5", "3.55", "3.6", "3.65", "3.7", "3.75",
"3.8", "3.85", "3.9", "3.95", "4"), class = "factor"), Rapport.3 = structure(c(32L,
35L, 22L, 22L, 5L, 25L, 30L, 21L, 25L, 34L), .Label = c("#NULL!",
"1.35", "1.45", "1.6", "1.75", "1.85", "1.9", "1.95", "2.05",
"2.1", "2.25", "2.3", "2.35", "2.4", "2.45", "2.6", "2.75", "2.8",
"2.9", "2.95", "3", "3.05", "3.1", "3.2", "3.25", "3.3", "3.35",
"3.4", "3.45", "3.5", "3.55", "3.6", "3.7", "3.75", "3.8", "3.85"
), class = "factor"), STRS.1 = structure(c(33L, 10L, 8L, 18L,
29L, 22L, 7L, 28L, 37L, 26L), .Label = c("#NULL!", "100", "102",
"103", "104", "106", "107", "108", "109", "110", "111", "112",
"113", "114", "115", "116", "117", "118", "119", "120", "122",
"123", "124", "125", "126", "127", "128", "129", "132", "133",
"69", "71", "73", "85", "88", "89", "92", "97", "99"), class = "factor"),
STRS.2 = structure(c(37L, 19L, 9L, 22L, 21L, 22L, 16L, 16L,
42L, 31L), .Label = c("#NULL!", "100", "101", "103", "104",
"105", "106", "107", "108", "110", "111", "113", "114", "115",
"116", "117", "118", "119", "120", "121", "122", "123", "124",
"125", "126", "127", "128", "129", "131", "132", "136", "137",
"138", "139", "158", "63", "76", "80", "91", "94", "95",
"98", "99"), class = "factor"), STRS.3 = structure(c(31L,
11L, 19L, 23L, 22L, 13L, 17L, 17L, 34L, 29L), .Label = c("#NULL!",
"102", "104", "105", "106", "107", "108", "109", "110", "111",
"112", "114", "117", "118", "119", "120", "122", "123", "124",
"125", "126", "127", "128", "129", "130", "131", "132", "133",
"134", "135", "66", "70", "75", "81", "85", "87", "88", "94",
"98"), class = "factor")), .Names = c("SubID", "Gender",
"Age", "Rapport.1", "Rapport.2", "Rapport.3", "STRS.1", "STRS.2",
"STRS.3"), row.names = c(NA, 10L), class = "data.frame")
I tried to use the "melt" function in reshape and the "gather" function in tidyr but both produce one column with the variable names "Rapport" and "STRS" stacked and another column with their values. I haven't been able to figure out how to produce a single column for the "Rapport" values and another column for the "STRS" values so that I can use a random effects model (note:I left out the other demograpic variables and covariates). Any help with these two functions would be much appreciated.
teachermelt <- melt(TeacherW,
id.vars=c("SubID", "Gender","Age"),
measure.vars=c("Rapport.1", "Rapport.2", "Rapport.3", "STRS.1","STRS.2","STRS.3" ),
variable.name="Rapport","STRS",
value.name="Rapport","STRS)
teachertidy <- gather(TeacherW, Rapport, STRS, Rapport.1:STRS.3)
I was finally able to obtain the longform using this "reshape" function, which seems quite simple but I'm not sure if there's anything I need to be aware of when doing it this way:
Teacherl<-reshape(TeacherW, varying = 4:9, sep = ".", idvar="SubID", direction = 'long')
View(Teacherl)