Удалить несколько столбцов в зависимости от условия - PullRequest
0 голосов
/ 21 декабря 2018

Я хочу убедиться, что столбец имеет как минимум 2 наблюдения больше 0. Как удалить несколько столбцов, у которых только одно наблюдение больше> 0;

Date     | Item1 | Item2 | Item3 | Item4
10/10/12 | 1     | 1     | 1     | 0
10/11/12 | 0     | 5     | 2     | 2
10/12/12 | 0     | 3     | 0     | 0
10/13/12 | 0     | 2     | 0     | 0
10/14/12 | 0     | 2     | 0     | 0

Необходимо удалить столбец Item1из фрейма данных.

Ответы [ 2 ]

0 голосов
/ 21 декабря 2018

Мы можем использовать colSums и сохранить столбец, который имеет как минимум 2 значения больше 0. Мы используем [-1] здесь, чтобы игнорировать Date столбец и проверить условие больше 0 для оставшихся столбцов.

*Столбцы 1004 *

Item1 и Item4 удалены, поскольку оба имеют только одно наблюдение больше 0.


Другой вариант - select_if из dplyr с использованием той же логики

library(dplyr)
bind_cols(df[1], df[-1] %>% select_if(funs(sum(. > 0) >= 2)))
0 голосов
/ 21 декабря 2018

Вот базовая опция R.Мы можем использовать apply, чтобы получить ненулевой счетчик для каждого столбца во фрейме данных.Затем мы можем установить подкадр данных при условии, что будут сохранены только столбцы с более чем одним ненулевым значением.

counts <- sapply(df, function(x) {
    sum(x > 0)
})

df[, counts > 1]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...