使用 R 选择具有不同列值的行

发布于 2024-09-02 08:11:03 字数 535 浏览 6 评论 0原文

我需要创建一个新的数据框,其中排除出现在“dam1”中的水坝和 “dam2”列位于同一 fosdate(培育日期)上。我尝试了 df <- df[df$dam1!=df$dam2,] 但没有成功。 Dam1 和 dam2 是母亲的 id 因子。

我的 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

将不胜感激任何帮助!

巴松

I need to create a new data frame that excludes dams that appear in "dam1" and
"dam2" columns on the same fosdate (fostering date). I tried df <- df[df$dam1!=df$dam2,] but did not work. Dam1 and dam2 are factors which are the id's of mothers.

my 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

The new data frame that I need to get is:
dfnew:

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

Would appreciate any help!

Bazon

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

风轻花落早 2024-09-09 08:11:03

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

dfnew <-df[as.character(df$dam1) != as.character(df$dam2), ]

The problem is that dam1 and dam2 are factors each with a different number of levels. To get around this you need to convert the factors to "characters" to do that comparison.

dfnew <-df[as.character(df$dam1) != as.character(df$dam2), ]
屋檐 2024-09-09 08:11:03

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

检查这一点,然后尝试类似的操作

is.factor(df$dam1)

您可以使用If this is the TRUE

df[as.character(df$dam1) != as.character(df$dam2),]

My guess is that when you imported the data, df$dam1 and df$dam2 became factors

You can check this with

is.factor(df$dam1)

If this is the TRUE, then try something like

df[as.character(df$dam1) != as.character(df$dam2),]
简单 2024-09-09 08:11:03

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

尝试

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

在比较子句的两侧显式指定 df$ 。

Wild guess based on the idea that you might be using R (since your other questions are about R). Note that I don't know R, I'm just putting 2 and 2 together from the other questions and answers given.

Try

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

i.e. specifiy df$ explicitly on both sides of the comparison clause.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文