Подмножество фрейма данных с использованием суммы каждого вектора строки 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
Я хочу взять подмножество этих данных, где сумма векторов строк больше числа, скажем, 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))