Как узнать имена столбцов, которые удовлетворяют условию во фрейме данных
Я хочу знать (по имени), какие столбцы в моем фрейме данных удовлетворяют определенному условию. Например, если я искал имена любых столбцов, которые содержали более 3 NA, как я мог продолжить?
>frame
m n o p
1 0 NA NA NA
2 0 2 2 2
3 0 NA NA NA
4 0 NA NA 1
5 0 NA NA NA
6 0 1 2 3
> for (i in frame){
na <- is.na(i)
as.numeric(na)
total<-sum(na)
if(total>3){
print (i) }}
[1] NA 2 NA NA NA 1
[2] NA 2 NA NA NA 2
Таким образом, на самом деле удается оценить, какие столбцы удовлетворяют условию, однако не отображает имя столбца. Возможно, подмножество интересующих меня столбцов было бы другим способом сделать это, но я также не уверен, как решить это таким образом. Кроме того, я бы предпочел узнать, есть ли способ просто получить имена напрямую.
Я буду признателен за любой вклад.
1 ответ
Мы можем использовать colSums
на логической матрице (is.na(frame)
), проверьте, больше ли это 3, чтобы получить логическое vector
а затем подмножество names
"кадр" на основе этого.
names(frame)[colSums(is.na(frame))>3]
#[1] "n" "o"
Если мы используем dplyr
один из способов
library(dplyr)
frame %>%
summarise_each(funs(sum(is.na(.))>3)) %>%
unlist() %>%
names(.)[.]
#[1] "n" "o"