2016-03-02 1 views
0

Я хочу найти строки, в которых сумма строк дает 3 из этих столбцов: 2nd (Q-1_A-4), 3-й (Q-4_A-1) и 5th (Q-9_A) -1). Вход и желаемый выход находятся ниже.Сумма строк в списке в R

Вход:

ID Q-1_A-4 Q-4_A-1 Q-6_A-1 Q-9_A-1 

122  1  1  0  1 
123  0  1  1  0 
124  0  0  1  0 
125  0  0  0  0 
126  1  1  1  1 

Желаемый результат:

ID no 122 and 126 gives 3 as a row sum for these 3 columns: 
(2nd (Q-1_A-4), 3th (Q-4_A-1) and 5th (Q-9_A-1)) 
+0

Вы должны проверить свой пример. Я не думаю, что строка ID 126 дает сумму строк 3, и в результате неясно, о чем вы просите. –

+0

@RyanThompson - строка ID 126 дает сумму 3 для 2-го, 3-го и 5-го столбцов. Пожалуйста, прочитайте еще раз. –

+0

@ScottHoltzman О, я вижу, это только рассмотрение подмножества столбцов. –

ответ

2

Мы можем использовать rowSums на подмножества столбцов, проверьте, если сумма 3, и использовать его для подмножества строк «df1 ».

df1[rowSums(df1[c(2,3,5)])==3,] 
+0

Как я могу указать 3 конкретных столбца для суммирования? @akrun – serenade

+0

@serenade Просто подмножите набор данных индексом столбца 'df1 [c (2,3,5)]' и выполните 'rowSums' и проверьте, равно ли это 3, затем подмножите строки на основе этого индекса. – akrun

+0

Но у меня есть эта ошибка: Ошибка в базе :: rowSums (x, na.rm = na.rm, dims = dims, ...): 'x' должно быть числовым @akhun – serenade