Try this:

newData <- sapply(numdat, function(x)lapply(strsplit(as.character(x), '-'),
function(.x)mean(as.numeric(.x))))

On Mon, May 17, 2010 at 3:29 PM, Juliet Hannah <juliet.hannah@gmail.com>wrote:

> I am recoding some data. Many values that should be 1.5 are recorded
> as 1-2. Some example data and my solution is below. I am curious about
> better approaches or any other suggestions. Thanks!
>
> # example input data
>
> myData <- read.table(textConnection("id, v1, v2, v3
> a,1,2,3
> b,1-2,,3-4
> c,,3,4"),header=TRUE,sep=",")
> closeAllConnections()
>
> # the first column is IDs so remove that
>
> numdat <- myData[,-1]
>
> # function to change dashes: 1-2 to 1.5
>
> myrecode <- function(mycol)
> {
>   newcol <- mycol
>   newcol <- gsub("1-2","1.5",newcol)
>   newcol <- gsub("2-3","2.5",newcol)
>   newcol <- gsub("3-4","3.5",newcol)
>   newcol <- as.numeric(newcol)
>
> }
>
> newData <- data.frame(do.call(cbind,lapply(numdat,myrecode)))
>
> ______________________________________________
> 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.
>



-- 
Henrique Dallazuanna
Curitiba-Paraná-Brasil
25° 25' 40" S 49° 16' 22" O

	[[alternative HTML version deleted]]

