RE: [R] Matrix formatting

About this list Date view Thread view Subject view Author view Attachment view

From: Adaikalavan Ramasamy (gisar@nus.edu.sg)
Date: Thu 13 Feb 2003 - 18:42:08 EST


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


About this list Date view Thread view Subject view Author view Attachment view

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