Re: [R] Transform data for repeated measures
Patrick; You got two helpful suggestions for where to start your learning how to reshape your data. I am going to admit that I have recurring difficulty using either reshape() or the functions in the reshape package. It undoubtedly reflects some sort of constricted abstraction capability on my part, but I have learned that sometimes I get what I need from a combination of rep() and the stack() function. The strategy is to rep() the recurring variables and stack() the repeated measures on the same subjects resp.df - read.table(textConnection(patient basefev1 fev11h fev12h fev13h fev14h fev15h fev16h fev17h fev18h drug 201 2.46 2.68 2.76 2.50 2.30 2.14 2.40 2.33 2.20a 202 3.50 3.95 3.65 2.93 2.53 3.04 3.37 3.14 2.62a 203 1.96 2.28 2.34 2.29 2.43 2.06 2.18 2.28 2.29a 204 3.44 4.08 3.87 3.79 3.30 3.80 3.24 2.98 2.91a), header=TRUE) closeAllConnections() stk.resp - data.frame(pt.id.=rep(resp.df$patient, 9), FEV1 =stack(resp.df[,2:10]), drug=rep(resp.df$drug, 9)) stk.resp pt.id. FEV1.values FEV1.ind drug 1 2012.46 basefev1a 2 2023.50 basefev1a 3 2031.96 basefev1a 4 2043.44 basefev1a 5 2012.68 fev11ha 6 2023.95 fev11ha 7 2032.28 fev11ha 8 2044.08 fev11ha snipped further unneeded output HTH; David. On Aug 27, 2009, at 7:37 PM, Richardson, Patrick wrote: I have a dataset that I'm trying to rearrange for a repeated measures analysis: It looks like: patient basefev1 fev11h fev12h fev13h fev14h fev15h fev16h fev17h fev18h drug 201 2.46 2.68 2.76 2.50 2.30 2.14 2.40 2.33 2.20a 202 3.50 3.95 3.65 2.93 2.53 3.04 3.37 3.14 2.62a 203 1.96 2.28 2.34 2.29 2.43 2.06 2.18 2.28 2.29a 204 3.44 4.08 3.87 3.79 3.30 3.80 3.24 2.98 2.91a And I want to make it look like: Patient FEV time drug 201 2.460 a 201 2.681 a 201 2.762 a 201 2.503 a And so on . . . . . There would be 9 time and drug is a factor variable. I know there is a way to do this in R but I cannot remember the function. I've looked at the transpose function in (base) but that doesn't seem to be what I want. Can something like this be done easily from within package functions or would it require writing something custom? Another program would use something like the transpose procedure, but I'm trying to stay away from that program. Thanks, Patrick David Winsemius, MD Heritage Laboratories West Hartford, CT __ R-help@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.
Re: [R] Transform data for repeated measures
Using reshape you can try this: reshape(resp.df, direction = long, idvar=patient, varying = list(grep(fev, names(resp.df On Thu, Aug 27, 2009 at 8:37 PM, Richardson, Patrick patrick.richard...@vai.org wrote: I have a dataset that I'm trying to rearrange for a repeated measures analysis: It looks like: patient basefev1 fev11h fev12h fev13h fev14h fev15h fev16h fev17h fev18h drug 201 2.46 2.68 2.76 2.50 2.30 2.14 2.40 2.33 2.20a 202 3.50 3.95 3.65 2.93 2.53 3.04 3.37 3.14 2.62a 203 1.96 2.28 2.34 2.29 2.43 2.06 2.18 2.28 2.29a 204 3.44 4.08 3.87 3.79 3.30 3.80 3.24 2.98 2.91a And I want to make it look like: Patient FEV time drug 201 2.460 a 201 2.681 a 201 2.762 a 201 2.503 a And so on . . . . . There would be 9 time and drug is a factor variable. I know there is a way to do this in R but I cannot remember the function. I've looked at the transpose function in (base) but that doesn't seem to be what I want. Can something like this be done easily from within package functions or would it require writing something custom? Another program would use something like the transpose procedure, but I'm trying to stay away from that program. Thanks, Patrick R version 2.9.2 (2009-08-24) i386-pc-mingw32 locale: LC_COLLATE=English_United States.1252;LC_CTYPE=English_United States.1252;LC_MONETARY=English_United States.1252;LC_NUMERIC=C;LC_TIME=English_United States.1252 attached base packages: [1] grDevices datasets tcltk splines graphics stats utils methods base other attached packages: [1] svSocket_0.9-43 svMisc_0.9.48 TinnR_1.0.3 R2HTML_1.59-1 Hmisc_3.6-1 survival_2.35-4 loaded via a namespace (and not attached): [1] cluster_1.12.0 grid_2.9.2 lattice_0.17-25 tools_2.9.2 This email message, including any attachments, is for ...{{dropped:20}} __ R-help@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.
Re: [R] Transform data for repeated measures
On Thu, Aug 27, 2009 at 6:37 PM, Richardson, Patrickpatrick.richard...@vai.org wrote: I have a dataset that I'm trying to rearrange for a repeated measures analysis: It looks like: patient basefev1 fev11h fev12h fev13h fev14h fev15h fev16h fev17h fev18h drug 201 2.46 2.68 2.76 2.50 2.30 2.14 2.40 2.33 2.20 a 202 3.50 3.95 3.65 2.93 2.53 3.04 3.37 3.14 2.62 a 203 1.96 2.28 2.34 2.29 2.43 2.06 2.18 2.28 2.29 a 204 3.44 4.08 3.87 3.79 3.30 3.80 3.24 2.98 2.91 a And I want to make it look like: Patient FEV time drug 201 2.46 0 a 201 2.68 1 a 201 2.76 2 a 201 2.50 3 a And so on . . . . . There would be 9 time and drug is a factor variable. I know there is a way to do this in R but I cannot remember the function. I've looked at the transpose function in (base) but that doesn't seem to be what I want. Can something like this be done easily from within package functions or would it require writing something custom? Another program would use something like the transpose procedure, but I'm trying to stay away from that program. To give a concrete example of what using the reshape package would look like: (thanks to David for making your example easily reproducible) resp.df - read.table(textConnection(patient basefev1 fev11h fev12h fev13h fev14h fev15h fev16h fev17h fev18h drug 201 2.46 2.68 2.76 2.50 2.30 2.14 2.40 2.33 2.20a 202 3.50 3.95 3.65 2.93 2.53 3.04 3.37 3.14 2.62a 203 1.96 2.28 2.34 2.29 2.43 2.06 2.18 2.28 2.29a 204 3.44 4.08 3.87 3.79 3.30 3.80 3.24 2.98 2.91 a), header=TRUE) closeAllConnections() library(reshape) # Identify the variables controlled by your experimental design: stk.resp - melt(resp.df, id = c(patient, drug)) stk.resp$time - as.numeric(gsub([^0-9], , stk.resp$variable)) Hadley -- http://had.co.nz/ __ R-help@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.
Re: [R] Transform data for repeated measures
?reshape On 28/08/2009, at 11:37 AM, Richardson, Patrick wrote: I have a dataset that I'm trying to rearrange for a repeated measures analysis: It looks like: patient basefev1 fev11h fev12h fev13h fev14h fev15h fev16h fev17h fev18h drug 201 2.46 2.68 2.76 2.50 2.30 2.14 2.40 2.33 2.20a 202 3.50 3.95 3.65 2.93 2.53 3.04 3.37 3.14 2.62a 203 1.96 2.28 2.34 2.29 2.43 2.06 2.18 2.28 2.29a 204 3.44 4.08 3.87 3.79 3.30 3.80 3.24 2.98 2.91a And I want to make it look like: Patient FEV time drug 201 2.460 a 201 2.681 a 201 2.762 a 201 2.503 a And so on . . . . . There would be 9 time and drug is a factor variable. I know there is a way to do this in R but I cannot remember the function. I've looked at the transpose function in (base) but that doesn't seem to be what I want. Can something like this be done easily from within package functions or would it require writing something custom? Another program would use something like the transpose procedure, but I'm trying to stay away from that program. Thanks, Patrick ## Attention:\ This e-mail message is privileged and confid...{{dropped:9}} __ R-help@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.
Re: [R] Transform data for repeated measures
I suspect reshape() is the function you're looking for; there is also a reshape package that you might prefer. It's also quite easy to do this in base R using unlist() and some indexing with rep, but that may be more than you care to deal with. Bert Gunter Genentech Nonclinical Biostatisics -Original Message- From: r-help-boun...@r-project.org [mailto:r-help-boun...@r-project.org] On Behalf Of Richardson, Patrick Sent: Thursday, August 27, 2009 4:37 PM To: r help Subject: [R] Transform data for repeated measures I have a dataset that I'm trying to rearrange for a repeated measures analysis: It looks like: patient basefev1 fev11h fev12h fev13h fev14h fev15h fev16h fev17h fev18h drug 201 2.46 2.68 2.76 2.50 2.30 2.14 2.40 2.33 2.20a 202 3.50 3.95 3.65 2.93 2.53 3.04 3.37 3.14 2.62a 203 1.96 2.28 2.34 2.29 2.43 2.06 2.18 2.28 2.29a 204 3.44 4.08 3.87 3.79 3.30 3.80 3.24 2.98 2.91a And I want to make it look like: Patient FEV time drug 201 2.460 a 201 2.681 a 201 2.762 a 201 2.503 a And so on . . . . . There would be 9 time and drug is a factor variable. I know there is a way to do this in R but I cannot remember the function. I've looked at the transpose function in (base) but that doesn't seem to be what I want. Can something like this be done easily from within package functions or would it require writing something custom? Another program would use something like the transpose procedure, but I'm trying to stay away from that program. Thanks, Patrick R version 2.9.2 (2009-08-24) i386-pc-mingw32 locale: LC_COLLATE=English_United States.1252;LC_CTYPE=English_United States.1252;LC_MONETARY=English_United States.1252;LC_NUMERIC=C;LC_TIME=English_United States.1252 attached base packages: [1] grDevices datasets tcltk splines graphics stats utils methods base other attached packages: [1] svSocket_0.9-43 svMisc_0.9.48 TinnR_1.0.3 R2HTML_1.59-1 Hmisc_3.6-1 survival_2.35-4 loaded via a namespace (and not attached): [1] cluster_1.12.0 grid_2.9.2 lattice_0.17-25 tools_2.9.2 This email message, including any attachments, is for th...{{dropped:8}} __ R-help@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.