[emaillocker]
Below are the solutions to these exercises on missing values. # Exercise 1 # Answer: 6 # Exercise 2 # Answer: a # Exercise 3 # Answer: b # Exercise 4 # Answer: C # Exercise 5 W <- c (11, 3, 5, NA, 6) is.na(W)
## [1] FALSE FALSE FALSE TRUE FALSE
# Exercise 6 data(Orange) Orange$age[Orange$age == 118] <- NA # Exercise 7 A <- c (33, 21, 12, NA, 7, 8) mean(A, na.rm = TRUE)
## [1] 16.2
# Exercise 8 c1 <- c(1,2,3,NA) c2 <- c(2,4,6,89) c3 <- c(45,NA,66,101) X <- rbind (c1,c2,c3, deparse.level=1) X[!complete.cases(X), ]
## [,1] [,2] [,3] [,4] ## c1 1 2 3 NA ## c3 45 NA 66 101
# Exercise 9 df <- data.frame(Name = c(NA, "Joseph", "Martin", NA, "Andrea"), Sales = c(15, 18, 21, 56, 60), Price = c(34, 52, 21, 44, 20), stringsAsFactors = FALSE) df[!is.na(df$Name), ]
## Name Sales Price ## 2 Joseph 18 52 ## 3 Martin 21 21 ## 5 Andrea 60 20
# Exercise 10 df <- data.frame(Name = c(NA, "Joseph", "Martin", NA, "Andrea"), Sales = c(15, 18, 21, NA, 60), Price = c(34, 52, 33, 44, NA), stringsAsFactors = FALSE) df[!(is.na(df$Name) | is.na(df$Sales)| is.na(df$Price)), ]
## Name Sales Price ## 2 Joseph 18 52 ## 3 Martin 21 33
[/emaillocker]
For exercise 10, a simpler solution would be:
df[complete.cases(df),]
For 9 we can also use complete.cases() like in previous exercise.
10:
df[complete.cases(df) & df$Name != “Andrea”,]
10:
with this command result is:
2 Joseph 18 52
3 Martin 21 21
5 Andrea 60 20
Not only data for Joseph and Martin
Solution for 10 should use AND instead of OR
like so:
df[!(is.na(df$Name) & is.na(df$Sales) & is.na(df$Price)), ]