#r
Вопрос:
В настоящее время у меня есть фрейм данных, состоящий из столбцов с численностью видов в качестве значений. Эти данные не для меня, поэтому я их не знаю. Есть много 0 и что — то ценное Я стараюсь с этим:
which(all(colSums(df==0)))
но я не удовлетворен результатом, есть какие-нибудь предложения? Тнх
Ответ №1:
Это должно дать вам номера столбцов, в которых есть только 0.
which(colSums(df==0) == nrow(df))
#b
#2
Еще один способ написать это —
which(colSums(df != 0) == 0)
данные
df <- data.frame(a = c(1, 2, 3, 0), b = 0, c = c(0, 0, 0, 1))
Комментарии:
1. фактически, я ищу, чтобы в результате было указано имя столбца и значение TRUE или FALSE, TRUE, если ВСЕ значения в столбце равны 0
2. @TristanUbaldi Тогда не нужно использовать
which
—colSums(df != 0) == 0
3. Вот именно! Спасибо, но мне также интересно, есть ли функция, позволяющая узнать количество столбцов, в которых результат является ИСТИННЫМ или ЛОЖНЫМ, например, в 10 столбцах в сумме, 3 ЛОЖНЫХ и 7 ИСТИННЫХ
4.
table(colSums(df != 0) == 0)
Ответ №2:
Мы можем использовать select
в dplyr
library(dplyr)
df %>%
select(where(~ all(. == 0)))
-выход
b
1 0
2 0
3 0
4 0
Чтобы сделать обратное, т. е. удалить эти столбцы
df %>%
select(where(~ any(. != 0)))
данные
df <- data.frame(a = c(1, 2, 3, 0), b = 0, c = c(0, 0, 0, 1))