2014-11-11 4 views
0

Я хотел бы удалить случаи из фрейма данных на основе того, содержат ли они определенный шаблон. Например, в фрейме данных ниже я хотел бы удалить все строки, которые содержат (Intercept), iyeareducc, ibphtdep и gender_R22 (или, альтернативно, выбор строк, содержащих _carrier1 или adri).Удалить выбранные случаи на основе критериев

       OR  CI P 
apoee4_carrier.(Intercept)  1.96 0.97-3.94 0.06 
apoee4_carrier.apoee4_carrier1 1.03 0.77-1.37 0.84 
apoee4_carrier.iyeareducc  0.86 0.82-0.9 0.00 
apoee4_carrier.ibphdtdep  1.01 0.96-1.05 0.81 
apoee4_carrier.gender_R22  0.87 0.67-1.12 0.28 
BDNF_carrier.(Intercept)  2.05 1.01-4.14 0.04 
BDNF_carrier.BDNF_carrier1  0.87 0.66-1.14 0.33 
BDNF_carrier.iyeareducc  0.86 0.82-0.9 0.00 
BDNF_carrier.ibphdtdep   1.00 0.96-1.05 0.82 
BDNF_carrier.gender_R22  0.87 0.67-1.12 0.28 
adri.(Intercept)    1.60 0.78-3.31 0.20 
adri.adri      1.03 1-1.06 0.04 
adri.iyeareducc    0.89 0.84-0.94 0.00 
adri.ibphdtdep     1.00 0.95-1.04 0.87 
adri.gender_R22    0.87 0.67-1.12 0.27 

В то время как я мог бы использовать последовательность для подмножества из строк, которые мне нужны, например, так

dat[(seq(2,nrow(dat),5)),] 
           OR  CI P 
apoee4_carrier.apoee4_carrier1 1.03 0.77-1.37 0.84 
BDNF_carrier.BDNF_carrier1  0.87 0.66-1.14 0.33 
adri.adri      1.03 1-1.06 0.04 

это будет работать только тогда, когда последовательность является одинаковой во всей dataframe, которая не может быть обязательно случай, когда этот кадр данных создается из списка фреймов данных, которые были объединены вместе.

Спасибо.

ответ

2

Вы можете использовать grep, чтобы выбрать строки, которые вы хотите/не хотите:

dat[-grep("Intercept|iyeareducc|ibphdtdep|gender", rownames(dat)),] 

grep возвращает число строк из строк, для которых имена строк содержат по крайней мере один из ваших строк поиска (| между каждой строкой означает «ИЛИ»). Помещая знак минуса перед grep, он сообщает R, чтобы возвращать только строки dat, которые не возвращаются grep.

+0

Спасибо, что сделал! – Andrews

Смежные вопросы