выберите строки с неидентичными значениями столбцов с помощью R

Я должен создать новый кадр данных, который исключает дамбы, которые появляются в "dam1" и "dam2" столбцах на том же fosdate (способствующий дате). Я попробовал df <- df[df$dam1!=df$dam2,] но не работал. Dam1 и dam2 являются факторами, которые являются идентификатором родительских элементов.

мой df:

fosdate      dam1     dam2
8/09/2009    2Z523    2Z523
30/10/2009   1W509    5C080
30/10/2009   1W509    5C640
30/10/2009   1W509    1W509
1/10/2009    1W311    63927

Новый кадр данных, который я должен получить: dfnew:

fosdate      dam1     dam2
30/10/2009   1W509    5C080
30/10/2009   1W509    5C640
1/10/2009    1W311    63927

Ценил бы любую справку!

Bazon

1
задан Michael Todd 20 May 2010 в 22:11
поделиться

3 ответа

Проблема в том, что dam1 и dam2 - это факторы, каждый из которых имеет разное количество уровней. Чтобы обойти это, нужно преобразовать факторы в "символы" для сравнения.

dfnew <-df[as.character(df$dam1) != as.character(df$dam2), ]
3
ответ дан 3 September 2019 в 00:27
поделиться

Я предполагаю, что когда вы импортировали данные, df $ dam1 и df $ dam2 стали факторами

Вы можете проверить это с помощью

is.factor(df$dam1)

Если это ИСТИНА, попробуйте что-то вроде

df[as.character(df$dam1) != as.character(df$dam2),]
0
ответ дан 3 September 2019 в 00:27
поделиться

Безумное предположение, основанное на идее, что вы, возможно, используете R (поскольку ваши другие вопросы касаются R). Обратите внимание, что я не знаю R, я просто складываю 2 и 2 из других заданных вопросов и ответов.

Попробуйте

df <- df[df$dam1 != df$dam2,]

т.е. явно указать df $ с обеих сторон предложения сравнения.

-1
ответ дан 3 September 2019 в 00:27
поделиться
Другие вопросы по тегам:

Похожие вопросы: