2015-01-11 4 views
0

У меня есть набор данных с несколькими столбцами. Я хочу вынуть строки из набора, которые отвечают двум условиям.Логический аргумент: удаление строк в соответствии с несколькими условиями

Я думал, что это будет работать: - [! АВТОМОБИЛИ $ CylCode = 17 & & АВТОМОБИЛИ $ ECode = 191,]

АВТОМОБИЛИ < АВТОМОБИЛИ

Но это вынимает все строки, которые удовлетворяют либо условию , и я хочу, чтобы оба условия были выполнены, чтобы удалить эту строку?

Спасибо!

+0

Я думаю, что есть что-то еще, потому что 'mtcars [mtcars $ vs! = 0 & mtcars $ am! = 0,] 'дает мне ожидаемые результаты, т. е. все строки, в которых оба столбца не равны 0 – rawr

ответ

1

Вы можете попробовать использовать sqldf, хотя это не будет самый элегантный ответ:

library("sqldf") 

CarS<-sqldf(' 
    select * 
    from CarS 
    where 
     (CylCode <> 17 and 
     ECode <> 191) 
    ') 

Второй подход

CarS[setdiff(rownames(CarS),rownames(toremove)),] 

toremove <-sqldf(' 
    select * 
    from CarS 
     where CylCode = 17 and ECode = 191 ') 
+0

Хмм .. Это было то же самое, что и CarS <- CarS [CarS $ CylCode! = 17 & CarS $ ECode! = 191,] Ваш метод удалил все автомобили с CylCode 17, хотя я хочу сохранить CylCode 17 для всех вложений что ECode не является 191. Любые мысли о настройке? Спасибо – sammyramz

+0

Сначала я не понял намерения, проще было бы сначала идентифицировать записи, которые вы хотели бы удалить, а затем создать новую таблицу, удаляющую эти записи. <См. Правки выше> –

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