簡體   English   中英

根據條件重新編碼 R 中的連續變量

[英]Recode continuous variable in R based on conditions

我想將用 SPSS 編寫的語法“翻譯”成 R 代碼,但我是 R 的初學者,並且很難讓它工作。

SPSS 語法是

DO IF  (Geschlecht = 0).
RECODE hang0 (SYSMIS=SYSMIS) (Lowest thru 22.99=0) (23 thru 55=1) (55.01 thru Highest=2)  
    INTO Hang.
ELSE IF (Geschlecht = 1).
RECODE hang0 (SYSMIS=SYSMIS) (Lowest thru 21.99=0) (22 thru 54=1) (54.01 thru Highest=2) 
    INTO Hang.
END IF.

我已經在 R 中安裝了“汽車”包,但我沒有讓“范圍”重新編碼工作(我試過

td_new$Hang <- recode(td_new$hang0, "0:22.99=0; 23:55=1; else=2")

我也無法使用 if-else-function。 我的最后一次嘗試是

if(td_new$Geschlecht == 0){
  td_new$Hang <- td_new$hang0 = 3
} else if (td_new$Geschlecht == 1) {
  td_new$Hang <- td_new$hang0 = 5)
} else
  td_new$hang0 <- NA

(這沒有重新編碼,只是為了測試 if-else 功能)。

如果有人幫助會很高興!

提前非常感謝:)!

抱歉,編輯添加:數據結構如下所示:

 Geschlecht hang0 0 15 1 45 1 7 0 11

我想重新編碼hang0,以便男孩(Geschlecht = 0):所有值< 23 = 0,23和55之間的值= 1,所有值> 55 = 2和女孩(Geschlecht = 1):所有值< 22 = 0,23 到 54 之間的值 = 1,所有值 > 54 = 2

這是case_when的一種方法:

library(dplyr)
td_new %>%
  mutate(Hang = case_when(Geschlecht = 0 & hang0 < 23 ~ 0,
                          Geschlecht = 0 & hang0 >= 23 &  hang0 < 55 ~ 1,
                          Geschlecht = 0 & hang0 >= 55 ~ 2,
                          Geschlecht = 1 & hang0 < 22 ~ 0,
                          Geschlecht = 1 & hang0 >= 22 &  hang0 < 54 ~ 1,
                          Geschlecht = 1 & hang0 >= 54 ~ 2,
                          TRUE ~ NA_real_))
#  Geschlecht hang0 Hang
#1          0    15    0
#2          1    45    1
#3          1     7    0
#4          0    11    0

最后一行是為了捕捉NA

數據

td_new <- structure(list(Geschlecht = c(0L, 1L, 1L, 0L), hang0 = c(15L, 45L, 7L, 11L)), class = "data.frame", row.names = c(NA, -4L))

暫無
暫無

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

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