我想“翻译”一个在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中安装了“汽车”-package,但是我没有得到“范围”记录工作(我已经尝试过了)
td_new$Hang <- recode(td_new$hang0, "0:22.99=0; 23:55=1; else=2")
我也没有设法使用if-否则函数。我最后一次尝试是
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。
发布于 2020-07-05 20:20:37
下面是一种使用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))https://stackoverflow.com/questions/62745802
复制相似问题