[英]Case_when and mutate using multiple variables
這是我第一次使用 R,我一直在嘗試將代碼從 SPSS 轉移到 R,語法是使用來自多個變量的多個條件在 R 中創建一個新變量。 等效的 SPSS 語法是:
COMPUTE OPEN=0.
DO IF (APP=1).
COMPUTE OPEN = 2.
ELSE IF (SCO12 >= 1 AND SCO12 <= 50).
COMPUTE OPEN = 2.
ELSE IF NOW = 1.
COMPUTE OPEN = 2.
ELSE IF EWEEK =1.
COMPUTE OPEN =2.
ELSE IF ROLL = 1.
DO IF (AT = 1 or AT = 2).
COMPUTE OPEN = 2.
ELSE IF AT = 3.
COMPUTE OPEN = 1.
ELSE IF AT = -8.
COMPUTE OPEN = -8.
ELSE.
COMPUTE OPEN = 2.
END IF.
ELSE IF (APP=-8 OR NOW = -8 OR ROLL = -8 or EWEEK=-8).
COMPUTE OPEN = -8.
ELSE IF (AGE=16 and (SCO12=97 or SCO12=-9)) .
COMPUTE OPEN =-8.
ELSE.
COMPUTE OPEN = 1.
END IF.
到目前為止我得到的 R 代碼是
OD21 %>% mutate(OPEN = case_when(APP = 1 ~ 2,
(SCO12 >=1 & SCO12 <=50) ~ 2,
NOW = 1 ~ 2,
EWEEK = 1 ~ 2,
ROLL = 1 & (AT = 1 | AT = 2) ~ 2,
ROLL = 1 & AT = 3 ~ 1,
ROLL = 1 & AT = -8 ~ -8)
但是我可以弄清楚如何繼續嗎?
如果我正確理解您的 SPSS 代碼(我自己不是 SPSS 用戶)
OD21 <- OD21 %>%
mutate(OPEN = case_when(
# "OPEN" will be == 2
APP == 1 ~ 2,
(SCO12 >= 1 & SCO12 <= 50) ~ 2,
NOW == 1 ~ 2,
EWEEK == 1 ~ 2,
ROLL == 1 & (AT == 1 | AT == 2) ~ 2,
ROLL == 1 & AT != 1 & AT != 2 & AT != 3 & AT != -8 ~ 2,
# "OPEN" will be == -8
ROLL == 1 & AT == -8 ~ -8,
APP == -8 | NOW == -8 | ROLL == -8 | EWEEK == -8 ~ -8,
AGE == 16 & (SCO12 == 97 | SCO12 == -9) ~ -8,
# "OPEN" will be == 1
TRUE ~ 1
)
沒有測試,因為我沒有可重現的例子。
==
檢查兩個數字之間的等價性(不是使用單個=
,這是不同的運算符)。TRUE ~
來涵蓋之前語句中未涵蓋的所有情況<-
object,否則mutate
不會保存您的數據集
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.