[R] First value in a row

Henrik Singmann henrik.singmann at psychologie.uni-freiburg.de
Tue Jul 24 10:40:10 CEST 2012


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
01    10   NA   NA  .1
01    11   NA   .2  .3
01    12   .4   .5  .6
", header = TRUE)

apply(dat[,-(1:2)], 1, function(x) x[!is.na(x)][1])

gives:
[1] 0.1 0.2 0.4

Cheers,
Henrik

Camilo Mora schrieb:
> Hi.
>
> This is likely a trivial problem but have not found a solution. Imagine
> the following dataframe:
>
> Lat   Lon  x1   x2  x3
> 01    10   NA   NA  .1
> 01    11   NA   .2  .3
> 01    12   .4   .5  .6
>
> I want to generate another column that consist of the first value in
> each row from columns x1 to x3. That is
>
> NewColumn
> .1
> .2
> .4
>
> Any input greatly appreciated,
>
> Thanks,
>
> Camilo
>
>
> Camilo Mora, Ph.D.
> Department of Geography, University of Hawaii
>



More information about the R-help mailing list