Re: [R] First value in a row

2012-07-25 Thread arun
Hi Camilo, Glad it worked well.  You mentioned replacing zeros with 1s.  You can use the same function, replace NA by 1. dat4<-ifelse(sapply(dat3,length)==0,1,dat3) A.K. - Original Message - From: Camilo Mora To: arun Cc: Sent: Wednesday, July 25, 2012 1:15 AM Subject: Re: F

Re: [R] First value in a row

2012-07-25 Thread arun
Hi, I think it was due to a row with all the NAs.  I hope it happens rarely. In those cases, you can assign NAs from looking at the list. dat2<-data.frame(t(dat1[,3:5])) dat3<-lapply(dat2,function(x) tail(x[!is.na(x)],1))  dat3 $X1 [1] 0.6 $X2 [1] 0.3 $X3 [1] 0.1 $X4 numeric(0)  dat3$X4<-NA d

Re: [R] First value in a row

2012-07-25 Thread arun
Hi Camilo, Forgot dat2: #same as in previous reply. dat2<-data.frame(t(dat1[,3:5])) A.K. - Original Message - From: Camilo Mora To: arun Cc: Henrik Singmann ; R help Sent: Tuesday, July 24, 2012 10:56 PM Subject: Re: First value in a row Hi Henrik and Arun, I now understand the

Re: [R] First value in a row

2012-07-25 Thread arun
Hi Camilo, You can either use Henrik's or mine to find it,  unlist(apply(dat1[,-(1:2)],1,function(x) tail(x[!is.na(x)],1)))  x3  x2  x1 0.6 0.3 0.1 #or you can use my functiton dat3<-data.frame(NewColumn=c(unlist(lapply(dat2,function(x) tail(x[!is.na(x)],1))),NA))  dat4<-data.frame(dat1,dat

Re: [R] First value in a row

2012-07-24 Thread Tyler Rinker
e > Subject: Re: [R] First value in a row > > Hi Henrik and Arun, > > I now understand the script you provided. Very smart solution I think. > I wonder, however, if there is an alternative way as to count the last > number in a row?. > For instance, considering the followi

Re: [R] First value in a row

2012-07-24 Thread Camilo Mora
Hi Henrik and Arun, I now understand the script you provided. Very smart solution I think. I wonder, however, if there is an alternative way as to count the last number in a row?. For instance, considering the following dataframe dat1<-read.table(text=" Lat Lon x1 x2 x3 0112 .4 .5

Re: [R] First value in a row

2012-07-24 Thread arun
Hi Henrik, Thanks for testing it to a different dataset.  I didn't test it at that time to multiple conditions.  Probably, apply is a better method. Anyway, you can still get the same result by doing this: dat1<-read.table(text=" Lat  Lon  x1  x2  x3 01    10  NA  NA  .1 01    11  .4  NA  .3

Re: [R] First value in a row

2012-07-24 Thread William Dunlap
unlap tibco.com > -Original Message- > From: r-help-boun...@r-project.org [mailto:r-help-boun...@r-project.org] On > Behalf Of Henrik Singmann > Sent: Tuesday, July 24, 2012 1:40 AM > To: r-h...@stat.math.ethz.ch > Subject: Re: [R] First value in a row > > Hi Camilo, > >

Re: [R] First value in a row

2012-07-24 Thread Henrik Singmann
Hi, As Arun's idea was also my first idea let me pinpoint the problem of this solution. It only works if the data in question (i.e., columns x1 to x3) follow the pattern of the example data insofar that the NAs form a triangle like structure. This is so because it loops over columns instead of

Re: [R] First value in a row

2012-07-24 Thread arun
Hi, Try this: dat1<-read.table(text=" Lat  Lon  x1  x2  x3 01    10  NA  NA  .1 01    11  NA  .2  .3 01    12  .4  .5  .6 ",sep="",header=TRUE) dat2<-dat1[,3:5]  dat3<-data.frame(dat1,NewColumn=rev(unlist(lapply(dat2,function(x) x[!is.na(x)][1] row.names(dat3)<-1:nrow(dat3)  dat3   Lat Lon 

Re: [R] First value in a row

2012-07-24 Thread Henrik Singmann
Hi Camilo, as you want to work on all rows, apply() is your friend. In the following, I use an anonymous function getting the first non-na value while looping over each row: dat <- read.table(text = " Lat Lon x1 x2 x3 0110 NA NA .1 0111 NA .2 .3 0112 .4 .5 .6 "