У вас просто были некоторые скобки в неправильном месте
df[rowSums(is.na(df[, c(9:11,1,2,4,5)])) < 3 & rowSums(is.na(df[, c(6:8,12:14,3)])) == 7,]
Чтобы помочь вам сделать код более понятным для себя при отладке, попробуйте распространяться по строкам с отступами или между кодами - вот что я написал
df[
rowSums( is.na( df[, c(9:11, 1, 2, 4, 5)] ) ) < 3 &
rowSums( is.na( df[, c(6:8, 12:14, 3)] ) ) == 7, ]
По сравнению с вашим, интервал помогает показать ошибку (ы)
df[
c(
rowSums( is.na( df[, c(9:11, 1, 2, 4, 5)] ) < 3 ) ) &
(rowSums( is.na( df[, c(6:8, 12:14, 3)] ) == 7 ) ), ]
Проверено с использованием
df <- data.frame(NA,2,NA,4,5,NA,NA,NA,9,10,11,NA,NA,NA)