Подмножество фрейма данных с использованием суммы каждого вектора строки R

Привет у меня есть некоторые данные, которые я читаю из CSV, который изложен в двоичном виде:

   1 2 3 4...N
1  0 1 0 1...1
2  1 1 0 1...1
3  0 0 0 0...0
4  1 0 1 1...1
.  1 1 1 0...1
.  1 0 0 0...1
N  0 0 1 1...0

скриншот str(данные)

Я хочу взять подмножество этих данных, где сумма векторов строк больше числа, скажем, 10 или x. Первый столбец является столбцом заполнителя для идентификатора клиента, поэтому его необходимо исключить. Есть ли у вас какие-либо предложения о том, как я мог бы сделать это?

Я пробовал разные вещи, такие как df=subset() но я не смог получить правильный синтаксис.

Заранее спасибо.

1 ответ

Решение

Мы можем сделать это с rowSums

df1[rowSums(df1) > 10, , drop = FALSE]
#  V1 V2 V3 V4 V5 V6 V7 V8 V9 V10 V11 V12 V13 V14 V15 V16 V17 V18 V19 V20
#7  0  0  0  1  0  0  1  1  0   1   1   1   1   1   0   0   0   1   1   1
#9  1  1  1  1  0  0  1  0  0   0   0   1   1   0   0   1   1   1   0   1

Обновить

В наборе данных OP первый столбец "X" не является двоичным и имеет большие числа. Итак, когда мы включаем эту переменную, rowSums будет больше 10. Это идентификатор индекса и не должен использоваться в расчете. Итак, удалив его в rowSumsбыло бы хорошо

df1[rowSums(df1[-1])> 10,]

данные

set.seed(24)
df1 <- as.data.frame(matrix(sample(0:1, 10* 20, replace = TRUE), ncol = 20))
Другие вопросы по тегам