
Hi

Just used this function on my real data - several enormous files (800000 rows by 200 columns...) and it worked perfectly! Thanks again for your help, saved me a lot of time!

A last quick query, I have several other similar problems to deal with in my data - do you know a useful book or online course that would be helpful for learning these sorts of data handling functions?

Thanks again!


--- On Fri, 8/10/10, Jeffrey Spies-2 [via R] <ml-node+2968583-620301009-75347@n4.nabble.com> wrote:

From: Jeffrey Spies-2 [via R] <ml-node+2968583-620301009-75347@n4.nabble.com>
Subject: Re: function using values separated by a comma
To: "burgundy" <sauburn@yahoo.com>
Date: Friday, 8 October, 2010, 16:48



Here's another method without using any external regular expression libraries:


dat <- read.table(tc <- textConnection(

'0,1 1,3 40,10 0,0

20,5 4,2 10,40 10,0

0,11 1,2 120,10 0,0'), sep="")


mat <- apply(dat, c(1,2), function(x){

        temp <- as.numeric(unlist(strsplit(x, ',')))

        min(temp)/sum(temp)

})


For mat[2,4], I get 0 (as did the other solutions), and you get 1, so

check on that. If you want the divide-by-0 NaNs to be 0, you can check

that by replacing


min(temp)/sum(temp)


with:


ifelse(is.nan(val<-min(temp)/sum(temp)), 0, val)


This has an advantage over:


mat[is.na(mat)] <- 0


in that you might have true missingness in your data and is.na won't

be able to distinguish it.


Cheers,


Jeff.


On Fri, Oct 8, 2010 at 1:19 AM, burgundy <[hidden email]> wrote:

>

> Hello,

>

> I have a dataframe (tab separated file) which looks like the example below -

> two values separated by a comma, and tab separation between each of these.

>

>     [,1]  [,2]  [,3]  [ ,4]

> [1,] 0,1  1,3   40,10  0,0

> [2,] 20,5  4,2  10,40  10,0

> [3,] 0,11  1,2  120,10  0,0

>

> I would like to calculate the percentage of the smallest number separated by

> the comma by:

> 1) summing the values e.g. for [1,3] where 40,10, 40+10 = 50

> 2) taking the first value and dividing it by the total e.g. for [1,3], 40/50

> = 0.8

> 3) where the value generated by 2) is >0.5, print 1-value, otherwise, leave

> value e.g. for [1,3], where value is 0.8, print 1-0.8 = 0.2

>

> plan to generate file like:

>

>    [,1]  [,2]  [,3]  [,4]

> [1,] 1   0.25  0.2  0

> [2,] 0.2  0.33  0.2  1

> [3,] 1  0.33  0.08  0

>

> Apologies, I know this is very complex. Any help, even just some pointers on

> how to write a general function where values are separated by a comma, is

> realy very much appreciated!

>

> Thank you

>

> --

> View this message in context: http://r.789695.n4.nabble.com/function-using-values-separated-by-a-comma-tp2967870p2967870.html
> Sent from the R help mailing list archive at Nabble.com.

>

> ______________________________________________

> [hidden email] 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.

>

______________________________________________

[hidden email] 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.







View message @ http://r.789695.n4.nabble.com/function-using-values-separated-by-a-comma-tp2967870p2968583.html


To unsubscribe from function using values separated by a comma, click here.







-- 
View this message in context: http://r.789695.n4.nabble.com/function-using-values-separated-by-a-comma-tp2967870p2990966.html
Sent from the R help mailing list archive at Nabble.com.

	[[alternative HTML version deleted]]

