How to select data with full cases of a specific column?

I am trying to get a data frame ( just.samples.with.shoulder.values , say) that contains only samples that have NA values. I tried to accomplish this with the complete.cases function, but I suppose I'm doing something wrong syntactically below:

 data <- structure(list(Sample = 1:14, Head = c(1L, 0L, NA, 1L, 1L, 1L, 0L, 0L, 1L, 1L, 1L, 1L, 0L, 1L), Shoulders = c(13L, 14L, NA, 18L, 10L, 24L, 53L, NA, 86L, 9L, 65L, 87L, 54L, 36L), Knees = c(1L, 1L, NA, 1L, 1L, 2L, 3L, 2L, 1L, NA, 2L, 3L, 4L, 3L), Toes = c(324L, 5L, NA, NA, 5L, 67L, 785L, 42562L, 554L, 456L, 7L, NA, 54L, NA )), .Names = c("Sample", "Head", "Shoulders", "Knees", "Toes" ), class = "data.frame", row.names = c(NA, -14L)) just.samples.with.shoulder.values <- data[complete.cases(data[,"Shoulders"])] print(just.samples.with.shoulder.values) 

I would also be interested to know if some other route (using subset() , let's say) is a wiser idea. Thank you for help!

+12
source share
3 answers

You can try using is.na :

 data[!is.na(data["Shoulders"]),] Sample Head Shoulders Knees Toes 1 1 1 13 1 324 2 2 0 14 1 5 4 4 1 18 1 NA 5 5 1 10 1 5 6 6 1 24 2 67 7 7 0 53 3 785 9 9 1 86 1 554 10 10 1 9 NA 456 11 11 1 65 2 7 12 12 1 87 3 NA 13 13 0 54 4 54 14 14 1 36 3 NA 
+12
source

You can also try complete.cases , which will return a logical vector that will allow Shoulders to multiply the data.

 data[complete.cases(data$Shoulders), ] # Sample Head Shoulders Knees Toes # 1 1 1 13 1 324 # 2 2 0 14 1 5 # 4 4 1 18 1 NA # 5 5 1 10 1 5 # 6 6 1 24 2 67 # 7 7 0 53 3 785 # 9 9 1 86 1 554 # 10 10 1 9 NA 456 # 11 11 1 65 2 7 # 12 12 1 87 3 NA # 13 13 0 54 4 54 # 14 14 1 36 3 NA 
+13
source

There is a slight difference between using is.na and complete.cases. is.na will delete the actual na values, while the goal is to control only the variable, and not handle the missing / na values ​​that may be valid data points

0
source

All Articles