Search code examples
rnarowsum

Columns Equal in R


How do I determine if columns values are equal?

Sample dataframe:

 A    B     C     D      E
ab   NA    NA    NA     NA
ed   dd    NA    NA     NA
ll   NA    NA    NA     NA
dd   NA    NA    ef     NA

How do I determine from columns 2:5 if they all contain NA?

I want my final dataframe to look like this:

 A    B     C     D      E       F
ab   NA    NA    NA     NA    TRUE
ed   dd    NA    NA     NA   FALSE
ll   NA    NA    NA     NA    TRUE
dd   NA    NA    ef     NA   FALSE

Solution

  • You can use rowSums and is.na like so:

    df1 = read.table(text=" A    B     C     D      E
    ab   NA    NA    NA     NA
    ed   dd    NA    NA     NA
    ll   NA    NA    NA     NA
    dd   NA    NA    ef     NA
    ", header=T, stringsAsFactors=F)
    
    df1$F <- rowSums(!is.na(df1[,2:5]))==0
    
    df1
    
       A    B  C    D  E     F
    1 ab <NA> NA <NA> NA  TRUE
    2 ed   dd NA <NA> NA FALSE
    3 ll <NA> NA <NA> NA  TRUE
    4 dd <NA> NA   ef NA FALSE