Фильтрация данных в R

Вам необходимо создать новый профиль обеспечения с использованием расширения службы BundleID.

12
задан Rich Scriven 17 November 2014 в 20:10
поделиться

2 ответа

Если x Ваш data.frame (или matrix) затем

x[ ,apply(x, 2, function(z) !any(is.na(z)))]

Начиная с Вашего использования в качестве примера NULL, is.na(·) будет заменен is.null(·)

Кроме того, можно посмотреть на subset(·).

7
ответ дан 2 December 2019 в 05:28
поделиться

Можно отбросить любую строку, содержащую отсутствие, использующее na.omit (), однако это не то, что Вы хотите. Кроме того, в настоящее время принимаемый ответ является неправильным. Это дает Вам полные столбцы, но не отбрасывает строки, которые имеют одно или несколько отсутствующих значений, который является тем, относительно чего попросили. Корректный ответ может быть получен как:

> a <- data.frame(a=c(1,2),b=c(NA,1), c=c(3,4))
> a
  a  b c
1 1 NA 3
2 2  1 4
> na.omit(a)[,colSums(is.na(a))==0]
  a c
2 2 4

Чтобы видеть, что вышеупомянутый ответ является неправильным:

> a[ ,apply(a, 2, function(z) !any(is.na(z)))]
  a c
1 1 3
2 2 4

Строка 1 должна быть отброшена из-за NA в столбце 2.

19
ответ дан 2 December 2019 в 05:28
поделиться
Другие вопросы по тегам:

Похожие вопросы: