[R] assign NA to rows by test on multiple columns of a data frame

Ek Esawi esawiek at gmail.com
Wed Nov 22 16:54:52 CET 2017

```Hi--

I too misread the question twice and i may have mistakenly posted non-text
answer earlier.  Below is a step by step solution that works provided that
your real data frame has the same structure (alternative columns as in your
example). You could combine all the steps in 2 statements.
Best of luck

EK

a <- grep("_flag",colnames(mydf))
b <- mydf[,a]==0
c <- mydf[,a-1]
c[b] <- NA
mydf[,a-1] <- c
mydf
A A_flag  B B_flag
1  8     10  5     12
2 NA      0  6      9
3 10      1 NA      0
4 NA      0  1      5
5  5      2 NA      0

On Wed, Nov 22, 2017 at 8:44 AM, Ek Esawi <esawiek at gmail.com> wrote:

> OPS,
>
> Sorry i did not read the post carfully. Mine will not work if you have
> zeros on columns A and B.. But you could modify it to work for specific
> columns i believe.
>
> EK
>
> On Wed, Nov 22, 2017 at 8:37 AM, Ek Esawi <esawiek at gmail.com> wrote:
>
>> Hi *Massimo,*
>>
>> *Try this.*
>>
>> *a <- mydf==0mydf[a] <- NAHTHEK*
>>
>> On Wed, Nov 22, 2017 at 5:34 AM, Massimo Bressan <
>> massimo.bressan at arpa.veneto.it> wrote:
>>
>>>
>>>
>>> Given this data frame (a simplified, essential reproducible example)
>>>
>>>
>>>
>>>
>>> A<-c(8,7,10,1,5)
>>>
>>> A_flag<-c(10,0,1,0,2)
>>>
>>> B<-c(5,6,2,1,0)
>>>
>>> B_flag<-c(12,9,0,5,0)
>>>
>>>
>>>
>>>
>>> mydf<-data.frame(A, A_flag, B, B_flag)
>>>
>>>
>>>
>>>
>>> # this is my initial df
>>>
>>> mydf
>>>
>>>
>>>
>>>
>>> I want to get to this final situation
>>>
>>>
>>>
>>>
>>> i<-which(mydf\$A_flag==0)
>>>
>>> mydf\$A[i]<-NA
>>>
>>>
>>>
>>>
>>> ii<-which(mydf\$B_flag==0)
>>>
>>> mydf\$B[ii]<-NA
>>>
>>>
>>>
>>>
>>> # this is my final df
>>>
>>> mydf
>>>
>>>
>>>
>>>
>>> By considering that I have to perform this task in a data frame with
>>> many columns I’m wondering if there is a compact and effective way to get
>>> the final result with just one ‘sweep’ of the dataframe?
>>>
>>>
>>>
>>>
>>> I was thinking to the function apply or lapply but I can not properly
>>> conceive how to…
>>>
>>>
>>>
>>>
>>> any hint for that?
>>>
>>>         [[alternative HTML version deleted]]
>>>
>>> ______________________________________________
>>> R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see
>>> https://stat.ethz.ch/mailman/listinfo/r-help
>>> ng-guide.html
>>> and provide commented, minimal, self-contained, reproducible code.
>>
>>
>>
>

[[alternative HTML version deleted]]

```