簡體   English   中英

ifelse 在 r 上應用過濾器時不起作用

[英]ifelse doesn't work when applying filter on r

很好,我正在嘗試在 R 中制作過濾器,但結果不如預期

x1 = c("PIB","PIB","PIB","PIB","PIB")
x2 = c("IBR","IBR","IBR","IBR","IBR")
coef_x1 = c(0.001,0.004,0.002,-0.099,-0.88)
coef_x2 = c(0.12,0.15,-0.99,-0.77,0.45)
Signo_x1 = c("+","+","+","+","+") 
Signo_x2 = c("+","+","+","+","+")

Table = data.frame(x1,x2,coef_x1,coef_x2,Signo_x1,Signo_x2)

那是我的桌子

   x1  x2 coef_x1 coef_x2 Signo_x1 Signo_x2
1 PIB IBR   0.001    0.12        +        +
2 PIB IBR   0.004    0.15        +        +
3 PIB IBR   0.002   -0.99        +        +
4 PIB IBR  -0.099   -0.77        +        +
5 PIB IBR  -0.880    0.45        +        +

我需要按如下方式執行過濾器

x1  x2 coef_x1 coef_x2 Signo_x1 Signo_x2
1 PIB IBR   0.001    0.12        +        +
2 PIB IBR   0.004    0.15        +        +
3 PIB IBR   0.002   -0.99        +        +

對於過濾器,我正在執行以下代碼:

在這里更新

 Table = ifelse(Table$Signo_x1 == "+",Table %>% dplyr::filter(Table$coef_x1 >= 0),Table %>% dplyr::filter(Table$coef_x1 <= 0))

[[1]]
[1] "PIB" "PIB" "PIB"

[[2]]
[1] "IBR" "IBR" "IBR"

[[3]]
[1] 0.001 0.004 0.002

[[4]]
[1]  0.12  0.15 -0.99

[[5]]
[1] "+" "+" "+"

任何人都知道如何將它轉換回 dataframe 或者如果我使用的代碼不正確我該如何修復它?

我們需要使用&來創建表達式

library(dplyr)
Table %>%
    filter(Signo_x1 == "+" & coef_x1 >= 0)

-輸出

    x1  x2 coef_x1 coef_x2 Signo_x1 Signo_x2
1 PIB IBR   0.001    0.12        +        +
2 PIB IBR   0.004    0.15        +        +
3 PIB IBR   0.002   -0.99        +        +

根據評論,我們可能需要if/else

Table %>%
    filter(if(any(Signo_x1 == "+" & coef_x1 >= 0)) 
       Signo_x1 == "+" & coef_x1 >= 0 else coef_x1 <=0)
  x1  x2 coef_x1 coef_x2 Signo_x1 Signo_x2
1 PIB IBR   0.001    0.12        +        +
2 PIB IBR   0.004    0.15        +        +
3 PIB IBR   0.002   -0.99        +        +

或者使用base Rsubset

subset(Table, Signo_x1 == "+" & coef_x1 >= 0)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM