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
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
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
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
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
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
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
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,
>
>
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
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
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
"
11 matches
Mail list logo