Удаление строк из кадра данных R

У меня есть следующий фрейм данных:

> str(df)
'data.frame':   3149 obs. of  9 variables:
 $ mkod : int  5029 5035 5036 5042 5048 5050 5065 5071 5072 5075 ...
 $ mad  : Factor w/ 65 levels "Akgün Kasetçilik         ",..: 58 29 59 40 56 11 33 34 19 20 ...
 $ yad  : Factor w/ 44 levels "BAKUGAN","BARBIE",..: 1 1 1 1 1 1 1 1 1 1 ...
 $ donem: int  201101 201101 201101 201101 201101 201101 201101 201101 201101 201101 ...
 $ sayi : int  201101 201101 201101 201101 201101 201101 201101 201101 201101 201101 ...
 $ plan : int  2 2 3 2 2 2 7 3 2 7 ...
 $ sevk : int  2 2 3 2 2 2 6 3 2 7 ...
 $ iade : int  0 0 3 1 2 2 6 2 2 3 ...
 $ satis: int  2 2 0 1 0 0 0 1 0 4 ...

Я хочу удалить 21 конкретную строку из этого фрейма данных.

> a <- df[df$plan==0 & df$sevk==0,]
> nrow(a)
[1] 21

Поэтому, когда я удалю эту 21 строку, у меня будет новый фрейм данных с 3149 - 21 = 3128. Я нашел следующее решение:

> b <- df[df$plan!=0 | df$sevk!=0,]
> nrow(b)
[1] 3128

В моем вышеупомянутом решении используется измененный логическое выражение (! = вместо == и | вместо & ).Помимо изменения исходного логического выражения, как я могу получить новый фрейм данных без этой 21 строки? Мне нужно что-то вроде этого:

> df[-a,] #does not work

РЕДАКТИРОВАТЬ (особенно для тех, кто проголосовал против, я надеюсь, они понимают, почему мне нужно альтернативное решение): я попросил другое решение, потому что я пишу длинный код, и есть разные присвоения переменных (например, a в моем примере) в различных частях моего кода. Итак, когда мне нужно удалить строки в продвинутых частях моего кода, я не хочу возвращаться и пытаться написать обратное логическим выражениям внутри a -подобных выражений. Вот почему мне удобнее использовать df [-a,] .

22
задан Mehper C. Palavuzlar 28 October 2011 в 06:59
поделиться