【问题标题】:excluding a set of observations in subsetting排除子集中的一组观察值
【发布时间】:2015-09-23 13:53:54
【问题描述】:

假设我有一个关于生物特征的数据。我想根据物种对数据进行子集化。我有 50 种物种,我想通过排除一个物种来进行子集化,例如两栖动物。什么命令可以帮助我做到这一点? 一种方法是在子集命令中明确写入所有物种的名称,如下所示

sub <- subset(data, species %in% c("species1,species2,...,species50))  #all species excluding amplhibians.

但这将是一个非常忙碌的过程。如何使用子集命令来获得我的结果? 提前致谢。

【问题讨论】:

    标签: r subset


    【解决方案1】:

    简单:只是否定测试:

    sub <- subset(data, ! species %in% 'amphibians')
    

    或者,因为您只想排除一个物种:

    sub <- subset(data, species != 'amphibians')
    

    请注意,前缀-! 在 R 中的运算符优先级与在其他语言中不同:在几乎所有其他编程语言中,第一段代码需要在 species %in% 'amphibians' 测试周围加上括号。在 R 中,这不是必需的:! a %in% b 等价于 ! (a %in% b)

    【讨论】:

    • fortunes::fortune(138)
    • @RHertel 同意。但是,我确定。多余的括号不会增加清晰度,它们会增加混乱。 ——这里没有真正的歧义。
    • 非常感谢。我使用的是相同的方法,但是添加了一个愚蠢的错误!在两栖动物而不是物种之前。我是 R 新手,所以我经常犯这种愚蠢的错误。不过非常感谢!
    猜你喜欢
    • 1970-01-01
    • 2019-09-20
    • 1970-01-01
    • 2022-11-04
    • 2012-11-26
    • 1970-01-01
    • 1970-01-01
    • 2020-09-23
    • 1970-01-01
    相关资源
    最近更新 更多