Я ищу фрейм данных, где все значения 4 столбцов меньше 0,5, за исключением значений NA.
Воспроизводимый пример
set.seed(121)
df = data.frame(ma1=runif(n=100, min=1e-5, max=.9999),
ma2=runif(n=100, min=1e-5, max=.9999),
intercept=runif(n=100, min=1e-5, max=.9999),
a1=runif(n=100, min=1e-5, max=.9999),
a2=runif(n=100, min=1e-5, max=.9999))
while(sum(is.na(df) == TRUE) < (nrow(df) * ncol(df) * 40/100)){
df[sample(nrow(df),1), sample(ncol(df),1)] <- NA
}
head(df,5)
# ma1 ma2 intercept a1 a2
1 0.3991884 0.17579814 0.5149290 0.4002567 0.2196074
2 0.9514976 NA NA 0.7689985 0.8700596
3 0.5431010 0.02019813 NA 0.4964349 0.8550961
4 0.7627217 0.95688326 0.6535286 0.6048702 NA
5 0.5507881 0.18073649 NA NA NA
Я хочу сохранить все строки со значениями меньше 0,5 для всех столбцов, кроме перехвата. Например, строка 1 выше.
Я пробовал это, но это неправильно.
subset(df, (ma1 < 0.5 | ma2 < 0.5 |a1 < 0.5 |a2 < 0.5) | is.na(df) )