P46A是教育水平的变量,P47是这个级别的年份。
这个想法是:
我使用dplyr:
Datos %>% mutate(newvariable= if_else(P46A %in% c(-98,-99),NA,
if_else(P46A %in% c(0,1), P47, if_else(P46A %in% c(2:4),P47+3,
if_else(P46A %in% c(5:7,11),P47+16, if_else(P46A %in% c(8,9),P47+23,P47+26))))))
换句话说,我想要计算一个新的变量,取决于其他变量的值。当我运行代码R打印错误。
Error in mutate_impl(.data, dots) :
Evaluation error: `false` must be type logical, not double.
谢谢!
答案 0 :(得分:0)
您也可以尝试使用case_when语句替换if_else语句。它使代码更清晰。
Datos %>% mutate(
newvariable= case_when(
P46A %in% c(-98, -99) ~ NA_real_,
P46A %in% c(0, 1) ~ P47,
P46A %in% c(5:7, 11) ~ P47 + 16,
P46A %in% 8:9 ~ P47 + 23,
TRUE ~ P47 + 26
)
)