Я должен создать новый кадр данных, который исключает дамбы, которые появляются в "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
Проблема в том, что dam1 и dam2 - это факторы, каждый из которых имеет разное количество уровней. Чтобы обойти это, нужно преобразовать факторы в "символы" для сравнения.
dfnew <-df[as.character(df$dam1) != as.character(df$dam2), ]
Я предполагаю, что когда вы импортировали данные, df $ dam1 и df $ dam2 стали факторами
Вы можете проверить это с помощью
is.factor(df$dam1)
Если это ИСТИНА, попробуйте что-то вроде
df[as.character(df$dam1) != as.character(df$dam2),]
Безумное предположение, основанное на идее, что вы, возможно, используете R (поскольку ваши другие вопросы касаются R). Обратите внимание, что я не знаю R, я просто складываю 2 и 2 из других заданных вопросов и ответов.
Попробуйте
df <- df[df$dam1 != df$dam2,]
т.е. явно указать df $ с обеих сторон предложения сравнения.