[英]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 R
的subset
subset(Table, Signo_x1 == "+" & coef_x1 >= 0)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.