Jim Lemon schrieb:
> On 01/15/2010 07:10 PM, Uli Kleinwechter wrote:
>> Dear all,
>>
>> I'm looking for a way to replace NA's with 0 for a number of variables
>> which share the same ending and which constitute a subset of a data
>> frame.
>>
>> Say, for example, there is
>>
>>> data<- data.frame(ax=c(1,2,3,NA,0) , bx=c(3,5,NA,5,1) ,
>> ay=c(5,NA,2,NA,0) , by=c(4,2,NA,2,1))
>>> data
>>    ax bx ay by
>> 1  1  3  5  4
>> 2  2  5 NA  2
>> 3  3 NA  2 NA
>> 4 NA  5 NA  2
>> 5  0  1  0  1
>>
>> I wish to apply something like  //
>> //
>> />  data[is.na(data)]<- 0/
>> //
>> but not to the entire data frame, rather only to the variables ending
>> with x.
>>
> Hi Uli,
> How about:
>
> data[,grep("x",names(data))][is.na(data[,grep("x",names(data))])]<-0
>
> Jim
>
Hi Jim,

thanks a lot. I'm just afraid that grep matches any occurence of "x" in
the variable name. So variables which would contain "x" at any position,
not necessarily only at the last one would be selected, as well. To
refine my example (sorry for having been so imprecise before...):

> data<- data.frame(ax=c(1,2,3,NA,0) , bx=c(3,5,NA,5,1)
,ay=c(5,NA,2,NA,0) , xy=c(4,2,NA,2,1))
> data
  ax bx ay xy
1  1  3  5  4
2  2  5 NA  2
3  3 NA  2 NA
4 NA  5 NA  2
5  0  1  0  1

The task, again, would be to replace NA's with 0 in "ax" and "bx", but
not in "ay" and "xy"

Best,

Uli

______________________________________________
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.

Reply via email to