1

我需要创建一个新的数据框,排除出现在同一 fosdate(培养日期)的“dam1”和“dam2”列中的水坝。我试过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

将不胜感激任何帮助!

巴宗

4

3 回答 3

3

问题是 dam1 和 dam2 是具有不同级别数的因子。为了解决这个问题,您需要将因素转换为“字符”来进行比较。

dfnew <-df[as.character(df$dam1) != as.character(df$dam2), ]
于 2010-05-20T23:14:24.747 回答
0

我的猜测是,当您导入数据时, df$dam1 和 df$dam2 成为因素

你可以检查这个

is.factor(df$dam1)

如果这是真的,那么尝试类似

df[as.character(df$dam1) != as.character(df$dam2),]
于 2010-05-20T23:07:16.773 回答
-1

根据您可能正在使用 R 的想法进行疯狂猜测(因为您的其他问题是关于 R 的)。请注意,我不知道 R,我只是将其他问题和答案中的 2 和 2 放在一起。

尝试

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

即在比较子句的两侧明确指定 df$。

于 2010-05-20T01:44:07.980 回答