Я хотел бы подмножить (фильтровать) фрейм данных, указав, какие строки не (!
), чтобы сохранить в новой информационной кадре. Вот упрощенный пример dataframe:Подмножество данных по нескольким логическим условиям строк для удаления
data
v1 v2 v3 v4
a v d c
a v d d
b n p g
b d d h
c k d c
c r p g
d v d x
d v d c
e v d b
e v d c
Например, если строка столбца v1 имеет «B», «D», или «е», я хочу, чтобы избавиться от этой строки наблюдений, производя следующий информационный кадр:
v1 v2 v3 v4
a v d c
a v d d
c k d c
c r p g
У меня была успешная подмножество, основанное на одном условии за раз. Например, здесь я удалить строки, где v1 содержит «Ъ»:
sub.data <- data[data[ , 1] != "b", ]
Однако, у меня есть много, много таких условий, поэтому делать это по одному не желательно. Я не был успешным с нижеследующим:
sub.data <- data[data[ , 1] != c("b", "d", "e")
или
sub.data <- subset(data, data[ , 1] != c("b", "d", "e"))
Я пробовал некоторые другие вещи, как !%in%
, но это, кажется, не существует. Любые идеи?
Приятный и простой, спасибо. Я не уверен, какое решение мне больше нравится, это тот или тот, который предоставил Андри. Они легки и эффективны. Все три решения работают для меня, и я никогда не использовал 'which()' before. Поэтому было приятно познакомиться с этой функцией. – Jota
Если это поможет вам решить, использовать ли 'подмножество' или' [', см. Предупреждение в справке для'? Subset': * «Это функция удобства, предназначенная для интерактивного использования. Для программирования лучше использовать стандартные функции подмножества, такие как [, и, в частности, нестандартная оценка подмножества аргументов может иметь непредвиденные последствия ». * – Andrie
@Andrie Спасибо за добавление разъяснений. – chl