Вы могли бы сделать это.По сути, вы рассчитываете (с rowSums
) количество точек данных, не относящихся к NA, сначала в x1-x5, а затем в y1-y5.Для идентификации не-NA я использую !is.na()
.!
является отрицанием, поэтому выражение означает «Не АН».Наконец, вы сохраняете только те строки, в которых «сумма строк не-NA равна> = 2» для x1-x5 AND (&
) для y1-y5.Для ясности в индексировании в вашем data.frame
есть 10 столбцов.df[,1:5]
представляет первые 5 столбцов, которые являются x1-x5.
df[rowSums(!is.na(df[,1:5]))>=2 & rowSums(!is.na(df[,6:10]))>=2,]
X1 X2 X3 X4 X5 Y1 Y2 Y3 Y4 Y5
Ind_2 2 NA 16 NA NA 5 16 12 3 4
Ind_3 NA NA NA 19 92 13 NA 12 NA NA
Ind_5 44 3 46 3 47 3 2 NA 3 4
Ind_6 NA 34 NA 8 NA 14 15 12 3 4
Ind_7 49 55 67 49 89 6 17 2 3 4
DATA
df <- read.table(text="Index_name,X1 X2 X3 X4 X5 Y1 Y2 Y3 Y4 Y5
Ind_1 7 NA NA NA NA 1 4 6 8 6
Ind_2 2 NA 16 NA NA 5 16 12 3 4
Ind_3 NA NA NA 19 92 13 NA 12 NA NA
Ind_4 32 5 12 3 5 NA NA NA NA 4
Ind_5 44 3 46 3 47 3 2 NA 3 4
Ind_6 NA 34 NA 8 NA 14 15 12 3 4
Ind_7 49 55 67 49 89 6 17 2 3 4
Ind_8 NA NA 49 NA NA 11 20 6 NA 4
Ind_9 1 1 5 NA 9 NA NA NA NA NA",row.names=1,
header=TRUE, stringsAsFactors=FALSE)