首页 > 解决方案 > R中带有双条件的多条件

问题描述

我有一个带有多个条件的语句,如下所示

with(x_in
  [
    x_in$Power_KW < 1700 
    & x_in$Power_KW  > 0 
    & x_in$Power_KW  < x_in$Expected_Power_KW*1.1 
    & x_in$Power_KW  > x_in$Expected_Power_KW*.9
  ,], 

    plot(x_in$Wind_Speed_, x_in$Power_KW ,col="gray48"
      ,main= titlename, col.main = "black", cex=.5,pch=16
      ,col.lab="black",col.axis = 'black',cex.lab=1.25
      ,xlim=c(0, 25), ylim=c(0, 1800))
    )

这工作得很好,但是我需要添加一个附加条件,在其中过滤“Wind_Speed_”大于 12 且“Power_KW”大于 1550 的附加数据。这两个都必须为 true 才能进行附加过滤。

我知道需要一个额外的 AND 语句,但我不知道如何在多个真实条件下做到这一点。我尝试研究 using exists,但我不认为我知道语法,或者它是如何工作的。这也可能不是处理问题的最佳方法。

谢谢!

编辑:为了更清楚起见 - 我只想过滤掉小于 1550 的“Power_KW”的数据,仅当“Wind_Speed_”大于 12 时。如果“Wind_Speed_”小于 12,我不想对它做任何事情.

标签: r

解决方案


with(x_in
  [
    (x_in$Power_KW < 1700 & x_in$Power_KW > 1550)
    # & x_in$Power_KW  > 0                        This is redundant
    & x_in$Power_KW  < x_in$Expected_Power_KW*1.1 
    & x_in$Power_KW  > x_in$Expected_Power_KW*.9
    & x_in$Wind_Speed_ > 12
  ,], 

    plot(x_in$Wind_Speed_, x_in$Power_KW ,col="gray48"
      ,main= titlename, col.main = "black", cex=.5,pch=16
      ,col.lab="black",col.axis = 'black',cex.lab=1.25
      ,xlim=c(0, 25), ylim=c(0, 1800))
    )

既然你说条件需要一起应用,我们可以把它们全部加在一起作为&条件。

编辑:

我假设您的第一组过滤器是正确的,您需要根据您提到的新条件进一步过滤掉一些行。

x_filtered <- x_in
  [
    x_in$Power_KW < 1700 
    & x_in$Power_KW  > 0 
    & x_in$Power_KW  < x_in$Expected_Power_KW*1.1 
    & x_in$Power_KW  > x_in$Expected_Power_KW*.9
  ,]

在这个中间 data.frame 上,我们可以应用额外的过滤器:

x_final <- x_filtered[(x_filtered$Wind_Speed_ < 12) | 
                      (x_filtered$Wind_Speed_ > 12 & x_filtered$Power_KW > 1550), ]

您可以像这样一次性完成此操作:

x_final <- x_in
      [
        x_in$Power_KW < 1700 
        & x_in$Power_KW  > 0 
        & x_in$Power_KW  < x_in$Expected_Power_KW*1.1 
        & x_in$Power_KW  > x_in$Expected_Power_KW*.9
      ,][(x_filtered$Wind_Speed_ < 12) | 
         (x_filtered$Wind_Speed_ > 12 & x_filtered$Power_KW > 1550), ]

推荐阅读