**From:** Adaikalavan Ramasamy (*gisar@nus.edu.sg*)

**Date:** Thu 13 Feb 2003 - 18:42:08 EST

**Next message:**thomas chapuis: "[R] Distribution function of Kolmogorov Smirnov and Anderson Darling"**Previous message:**Adaikalavan Ramasamy: "RE: [R] Interpolation"**Maybe in reply to:**Tim Sharac: "[R] Matrix formatting"**Next in thread:**Andy Bunn: "[R] Matrix formatting - reprise"

Message-id: <024D6AEFCB92CB47BA1085751D184BB80105F206@MBXSRV03.stf.nus.edu.sg>

I do something like this as part of a missing value plot where I 'flush'

the rows with most missing spots to the bottom and the columns with the

most missing values to the right. In this manner I can visually see how

much data I will retain (by looking at the area) if I decide to truncate

rows/columns by missing value criterion. You might find this code useful

in rearranging your matrix:

na.mat <- 1*is.na(data)

spots.na.per.row <- rowSums(na.mat)/ncol(data) # calculates the

percentage missing by row

spots.na.per.column <- colSums(na.mat)/nrow(data)

data.re <- data[ order(spots.na.per.row), order(spots.na.per.column) ]

-----Original Message-----

From: Jerome Asselin [mailto:jerome@hivnet.ubc.ca]

Sent: Thursday, February 13, 2003 5:06 AM

To: Tim Sharac; r-help@stat.math.ethz.ch

Subject: Re: [R] Matrix formatting

Would this do what you want?

Cheers,

Jerome

*> foo.dat <- cbind(c(NA, 1, 2, 3, 4, 5), c(NA, NA, 0, 10 ,20, 30))
*

*> apply(foo.dat,2,function(x) x[order(as.logical(x))])
*

[,1] [,2]

[1,] 1 0

[2,] 2 10

[3,] 3 20

[4,] 4 30

[5,] 5 NA

[6,] NA NA

On Wednesday 12 February 2003 12:42, Tim Sharac wrote:

*> Content-Length: 918
*

*> Status: R
*

*> X-Status: N
*

*>
*

*> Hi R-users:
*

*>
*

*> I have a data formatting question. I have a data set that looks
*

*> something like this:
*

*>
*

*> foo.dat <- cbind(c(NA, 1, 2, 3, 4, 5), c(NA, NA, 0, 10 ,20, 30))
*

*>
*

*> What I have:
*

*>
*

*> [,1] [,2]
*

*> [1,] NA NA
*

*> [2,] 1 NA
*

*> [3,] 2 0
*

*> [4,] 3 10
*

*> [5,] 4 20
*

*> [6,] 5 30
*

*>
*

*>
*

*> I want to line up the columns by the first value that is not NA. Like
*

*> so:
*

*>
*

*> [,1] [,2]
*

*> [1,] 1 0
*

*> [2,] 2 10
*

*> [3,] 3 20
*

*> [4,] 4 30
*

*> [5,] 5 NA
*

*> [6,] NA NA
*

*>
*

*> Question is: Is there an elegant way to do this without a for loop?
*

*>
*

*> I tried doing this with na.omit and na.exclude without success.
*

*>
*

*> The real data is many hundreds of columns and many thousands of rows.
*

*>
*

*> Thanks in advance, Tim
*

*>
*

*> Sign up for Internet Service under $10 dollars a month, at
*

*> http://isp.BlueLight.com
*

*>
*

*> ______________________________________________
*

*> R-help@stat.math.ethz.ch mailing list
*

*> http://www.stat.math.ethz.ch/mailman/listinfo/r-help
*

______________________________________________

R-help@stat.math.ethz.ch mailing list

http://www.stat.math.ethz.ch/mailman/listinfo/r-help

______________________________________________

R-help@stat.math.ethz.ch mailing list

http://www.stat.math.ethz.ch/mailman/listinfo/r-help

**Next message:**thomas chapuis: "[R] Distribution function of Kolmogorov Smirnov and Anderson Darling"**Previous message:**Adaikalavan Ramasamy: "RE: [R] Interpolation"**Maybe in reply to:**Tim Sharac: "[R] Matrix formatting"**Next in thread:**Andy Bunn: "[R] Matrix formatting - reprise"

*
This archive was generated by hypermail 2.1.3
: Tue 01 Jul 2003 - 09:11:21 EST
*