【问题标题】:How to filter in R with subsets如何在 R 中过滤子集
【发布时间】:2021-10-05 07:32:09
【问题描述】:

我有一个包含列的数据框:海岸、体重增加、长度增加、释放重量、释放长度。 Coast 是分类变量(“E”或“W”),其他变量是数字变量。我想创建一个数据框,在其中按每个海岸的特定范围进行过滤,但我很难找出正确的语法。

例如,我有这个:

newdata<-filter(mydata, coast=="E", 
                between(weight_gain, number, number) &
                between(length_gain, number, number) & 
                between(weight_release, number, number) & 
                between(length_release, number, number))

这很好用,但它只考虑海岸“E”,我想为海岸“W”设置另一组条件,其数值范围略有不同。如何将“E”和“W”的两个条件合并到一个参数中?

非常感谢!

【问题讨论】:

  • 如果您包含一个简单的reproducible example,其中包含可用于测试和验证可能解决方案的示例输入和所需输出,则更容易为您提供帮助。

标签: r filter subset


【解决方案1】:

dplyr 中的filter 可以将&amp; 用于AND 和| 用于OR,因此如果数值约束因海岸而异,一种方法可能是

newdata <- filter(mydata, 
                  (coast=="E" & 
                   between(weight_gain, number, number) &
                   between(length_gain, number, number) & 
                   between(weight_release, number, number) & 
                   between(length_release, number, number)) |
                  (coast=="W" & 
                   between(weight_gain, number, number) &
                   between(length_gain, number, number) & 
                   between(weight_release, number, number) & 
                   between(length_release, number, number)) )

【讨论】:

    猜你喜欢
    • 2020-03-09
    • 2015-04-04
    • 1970-01-01
    • 2015-11-03
    • 1970-01-01
    • 1970-01-01
    • 2022-11-20
    • 2016-09-23
    相关资源
    最近更新 更多