[R] Read data in sequences

Gabor Grothendieck ggrothendieck at gmail.com
Sun Apr 11 23:13:02 CEST 2010


Here it is in function form:

> # DF is data frame
> # k is number of levels
> # ids is a vector of column numbers of id variables
>
> read.reps <- function(DF, k = 2, ids = 1) {
+  n <- prod(dim(DF[-ids])) / k # no of rows of output
+  m <- ncol(DF[-ids])/k # no of reps per line
+  data.frame(id = DF[gl(n, m, n), ids], t(matrix(t(DF[-ids]), k)))
+ }
>
> # read in test data
> Lines <- "A 2.5 3.4 2.7 5.6 5.7 5.4 10.1 9.4
+ B 5.3 5.4 6.5 7.5 1.3 4.5 10.5 4.1"
> DF <- read.table(textConnection(Lines))

> # test 1
> read.reps(DF)
  id   X1  X2
1  A  2.5 3.4
2  A  2.7 5.6
3  A  5.7 5.4
4  A 10.1 9.4
5  B  5.3 5.4
6  B  6.5 7.5
7  B  1.3 4.5
8  B 10.5 4.1

> # test 2
> read.reps(DF, 4)
  id  X1  X2   X3  X4
1  A 2.5 3.4  2.7 5.6
2  A 5.7 5.4 10.1 9.4
3  B 5.3 5.4  6.5 7.5
4  B 1.3 4.5 10.5 4.1

> # test 3
> read.reps(DF, 3, 1:3)
    id.V1 id.V2 id.V3  X1   X2  X3
1       A   2.5   3.4 2.7  5.6 5.7
1.1     A   2.5   3.4 5.4 10.1 9.4
2       B   5.3   5.4 6.5  7.5 1.3
2.1     B   5.3   5.4 4.5 10.5 4.1


On Sun, Apr 11, 2010 at 2:17 PM, RockO <rock.ouimet at gmail.com> wrote:
>
> Gabor's elegant method works as well indeed where gl(number of factor
> level,number of replications):
>
>> data.frame(id = dat[gl(3,4),1], t(matrix(t(dat[-1]), 2)))
>
> Rock
> DRF-MRNF, Quebec
> --
> View this message in context: http://n4.nabble.com/Read-data-in-sequences-tp1819487p1836285.html
> Sent from the R help mailing list archive at Nabble.com.
>
> ______________________________________________
> R-help at 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.
>



More information about the R-help mailing list