How to remove groups with NA(s)

Hi!

My dataset has specimens with data from the right and left side of the body (values coded as 0 and 1) and I need to combine these. If one side has a missing value, NA, I need to delete the specimen completely; i.e., remove the group with the NA or at least get the sum to return NA.

EDIT: Here's an example of the data.

structure(list(SK.ID = c(216L, 216L, 306L, 306L, 372L, 372L, 
373L, 373L, 397L, 397L, 400L, 400L, 401L, 401L, 411L, 411L, 456L, 
456L, 493L, 493L, 522L, 522L, 524L, 524L, 528L, 528L, 529L, 529L, 
538L, 538L, 539L, 539L, 540L, 540L, 541L, 541L, 542L, 542L, 544L, 
544L, 545L, 545L, 547L, 547L, 548L, 548L, 552L, 552L, 553L, 553L
), SIDE = c("L", "R", "L", "R", "L", "R", "L", "R", "L", "R", 
"L", "R", "L", "R", "L", "R", "L", "R", "L", "R", "L", "R", "L", 
"R", "L", "R", "L", "R", "L", "R", "L", "R", "L", "R", "L", "R", 
"L", "R", "L", "R", "L", "R", "L", "R", "L", "R", "L", "R", "L", 
"R"), MET = c(NA_real_, NA_real_, NA_real_, NA_real_, NA_real_, 
NA_real_, NA_real_, NA_real_, NA_real_, NA_real_, NA_real_, NA_real_, 
NA_real_, NA_real_, NA_real_, NA_real_, NA_real_, NA_real_, NA_real_, 
NA_real_, NA_real_, NA_real_, NA_real_, NA_real_, NA_real_, NA_real_, 
NA_real_, NA_real_, NA_real_, NA_real_, NA_real_, NA_real_, NA_real_, 
NA_real_, NA_real_, NA_real_, NA_real_, NA_real_, NA_real_, NA_real_, 
NA_real_, NA_real_, NA_real_, NA_real_, NA_real_, NA_real_, NA_real_, 
NA_real_, NA_real_, NA_real_), BRE = c(NA_integer_, NA_integer_, 
NA_integer_, NA_integer_, NA_integer_, NA_integer_, NA_integer_, 
NA_integer_, NA_integer_, NA_integer_, NA_integer_, NA_integer_, 
NA_integer_, NA_integer_, NA_integer_, NA_integer_, NA_integer_, 
NA_integer_, NA_integer_, NA_integer_, NA_integer_, NA_integer_, 
NA_integer_, NA_integer_, NA_integer_, NA_integer_, NA_integer_, 
NA_integer_, NA_integer_, NA_integer_, NA_integer_, NA_integer_, 
NA_integer_, NA_integer_, NA_integer_, NA_integer_, NA_integer_, 
NA_integer_, NA_integer_, NA_integer_, NA_integer_, NA_integer_, 
NA_integer_, NA_integer_, NA_integer_, NA_integer_, NA_integer_, 
NA_integer_, NA_integer_, NA_integer_), COR = c(0, 0, NA, 1, 
0, 0, NA, 0, NA, NA, 0, 0, NA, 0, 0, 0, 0, 1, 0, NA, 0, 0, NA, 
NA, NA, 0, 0, 0, 0, 0, NA, NA, NA, 0.5, NA, NA, NA, NA, 0, 0, 
0, 0, NA, NA, 1, 0, 0, 0, 0, 0), SAG = c(NA_integer_, NA_integer_, 
NA_integer_, NA_integer_, NA_integer_, NA_integer_, NA_integer_, 
NA_integer_, NA_integer_, NA_integer_, NA_integer_, NA_integer_, 
NA_integer_, NA_integer_, NA_integer_, NA_integer_, NA_integer_, 
NA_integer_, NA_integer_, NA_integer_, NA_integer_, NA_integer_, 
NA_integer_, NA_integer_, NA_integer_, NA_integer_, NA_integer_, 
NA_integer_, NA_integer_, NA_integer_, NA_integer_, NA_integer_, 
NA_integer_, NA_integer_, NA_integer_, NA_integer_, NA_integer_, 
NA_integer_, NA_integer_, NA_integer_, NA_integer_, NA_integer_, 
NA_integer_, NA_integer_, NA_integer_, NA_integer_, NA_integer_, 
NA_integer_, NA_integer_, NA_integer_), LAM = c(0L, 0L, 0L, NA, 
1L, 0L, 1L, NA, 1L, 1L, 1L, 1L, 0L, 0L, 0L, 0L, 1L, 1L, 0L, 0L, 
1L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 1L, 0L, 0L, 1L, NA, NA, NA, 
NA, NA, 0L, 1L, 0L, 0L, NA, NA, 1L, 1L, 0L, 0L, 1L, 1L), API = c(NA_integer_, 
NA_integer_, NA_integer_, NA_integer_, NA_integer_, NA_integer_, 
NA_integer_, NA_integer_, NA_integer_, NA_integer_, NA_integer_, 
NA_integer_, NA_integer_, NA_integer_, NA_integer_, NA_integer_, 
NA_integer_, NA_integer_, NA_integer_, NA_integer_, NA_integer_, 
NA_integer_, NA_integer_, NA_integer_, NA_integer_, NA_integer_, 
NA_integer_, NA_integer_, NA_integer_, NA_integer_, NA_integer_, 
NA_integer_, NA_integer_, NA_integer_, NA_integer_, NA_integer_, 
NA_integer_, NA_integer_, NA_integer_, NA_integer_, NA_integer_, 
NA_integer_, NA_integer_, NA_integer_, NA_integer_, NA_integer_, 
NA_integer_, NA_integer_, NA_integer_, NA_integer_), INC = c(NA_integer_, 
NA_integer_, NA_integer_, NA_integer_, NA_integer_, NA_integer_, 
NA_integer_, NA_integer_, NA_integer_, NA_integer_, NA_integer_, 
NA_integer_, NA_integer_, NA_integer_, NA_integer_, NA_integer_, 
NA_integer_, NA_integer_, NA_integer_, NA_integer_, NA_integer_, 
NA_integer_, NA_integer_, NA_integer_, NA_integer_, NA_integer_, 
NA_integer_, NA_integer_, NA_integer_, NA_integer_, NA_integer_, 
NA_integer_, NA_integer_, NA_integer_, NA_integer_, NA_integer_, 
NA_integer_, NA_integer_, NA_integer_, NA_integer_, NA_integer_, 
NA_integer_, NA_integer_, NA_integer_, NA_integer_, NA_integer_, 
NA_integer_, NA_integer_, NA_integer_, NA_integer_), AST = c(NA, 
NA, 0, 0, 0, 0, 0, NA, 1, 1, 0, 1, 0, 0, NA, NA, 0, 0, NA, NA, 
0, 0, NA, 0, 0, 0, 0, 0, 0.5, 1, 0, 0, 0, 0, 0, 0, NA, NA, 0, 
0, 0, 0, NA, NA, 0, 0, 0, 1, 0, 0)), row.names = c(NA, 50L), class = "data.frame")

Thanks!

Hi, welcome to the forum.

It would be easier to answer your question if we could see a sample of your data.

A handy way to supply data is to use the dput() function. Do dput(mydata) where "mydata" is the name of your dataset. For really large datasets probably dput(head(mydata, 100). Paste it here between

```

```

Hi,

Thanks! I've added an example using your tip (thanks!)

Thanks.
Clearly SIDE gives the side of the body but I do not understand the values coded as 0 and 1) and I need to combine these.

Are you saying that, for any row of data, if there is an NA in any of these variables:

3:    MET
 4:    BRE
 5:    COR
 6:    SAG
 7:    LAM
 8:    API
 9:    INC
10:    AST

you want to delete that row? Or if there is an NA in SIDE you want to delete the data?

BTW have a look at

?na.omit()

Some version of it may be what you want.

1 Like