[R] how to create a substraction matrix (subtract a row of every column from the same row in other columns)
Rui Barradas
ruipbarradas at sapo.pt
Thu Sep 13 11:04:24 CEST 2012
Hello,
I'm not sure if this is what you want.
dat <- data.frame(matrix(1:25 + rnorm(25), ncol=5,
dimnames=list(NULL, paste0("x", 1:5))))
d2 <- apply(dat, 1, diff)
nms <- t(outer(names(dat), names(dat), paste0))
res <- data.frame(difftype = nms[lower.tri(nms)],
value = d2[lower.tri(d2, diag = TRUE)])
res
Hope this helps,
Rui Barradas
Em 12-09-2012 21:45, csmeredith escreveu:
> Hello
> I have data like this
>
> x1 x2 x3 x4 x5
>
> I want to create a matrix similar to a correlation matrix, but with the
> difference between the two values, like this
>
> x1 x2 x3 x4 x5
> x1 x2-x1 x3-x1 x4-x1 x5-x1
> x2 x3-x2 x4-x2 x5-x2
> x3 x4-x3 x5-x3
> x4 x5-x4
> x5
>
> Then I want to convert it back to a data frame with a column that describes
> what columns were used in the calculation, but I would like to only include
> the comparisons that go forward in number. Basically, each number represents
> a year, and I want each comparison to only be listed once, the difference
> between the 1st year the sample was taken and then 2nd year the sample was
> taken. (This would probably entail just taking a portion of the matrix.) .
> This is what the result would be
>
> difftype value
> x1x2
> x1x3
> x1x4
> x1x5
> x2x3
> x2x4
> x2x5
> x3x4
> x3x5
> x4x5
>
> Thank you for any help you can give me.
>
>
>
>
> --
> View this message in context: http://r.789695.n4.nabble.com/how-to-create-a-substraction-matrix-subtract-a-row-of-every-column-from-the-same-row-in-other-column-tp4642949.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