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-75...@n4.nabble.com> wrote: From: Jeffrey Spies-2 [via R] <ml-node+2968583-620301009-75...@n4.nabble.com> Subject: Re: function using values separated by a comma To: "burgundy" <saub...@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]]
______________________________________________ R-help@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.