如何使用dplyr计算R中的条件变异?

时间:2018-03-30 17:19:02

标签: r dplyr

我有这个问题。 我想计算一个新变量,这个变量以其他变量为条件:

P46A是教育水平的变量,P47是这个级别的年份。

这个想法是:

enter image description here

我使用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.

谢谢!

1 个答案:

答案 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
  )
)