Удалить определенные столбцы со значениями NA - PullRequest
0 голосов
/ 27 сентября 2018

Это мой фрейм данных:

set.seed(1)
df <- data.frame(A = 1:50, B = 11:60, c = 21:70)
head(df)
df.final <- as.data.frame(lapply(df, function(cc) cc[ sample(c(TRUE, NA), prob = c(0.85, 0.15), size = length(cc), replace = TRUE) ]))

Я хочу удалить столбцы, последние 5 значений которых не заполнены NA.То есть остаются только столбцы, значения которых находятся в строках от 46 до 50.столбцы, последние 5 значений которых имеют один или несколько NA, будут удалены.

Возможно ли это сделать с помощью dplyr?

Любая помощь?

Ответы [ 2 ]

0 голосов
/ 27 сентября 2018

Шри побеждает меня, но это может пригодиться:

> df.final %>% tail
    A  B  c
45 45 55 65
46 46 NA 66
47 47 57 67
48 NA 58 68
49 NA 59 69
50 NA 60 NA

> df.final %>%
+     select_if(~ !any(is.na(tail(., n = 1)))) %>%
+     tail()
    B
45 55
46 NA
47 57                                                           
48 58                                                          
49 59                                                            
50 60

Просто измените n выше на количество последних NA, которые вы хотите.

0 голосов
/ 27 сентября 2018

dplyr::select() принимает целочисленные позиции столбца.Мы можем использовать это для достижения этого -

result <- df.final %>% select(., which(!is.na(colSums(tail(., 5)))))
head(result)
   A  B
1  1 11
2  2 NA
3  3 13
4 NA 14
5  5 15
6 NA 16
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...