根据类变量

时间:2019-04-14 23:55:33

标签: r

我有一个要操纵的数据集。这就需要我根据类cartype变量值1和2转换轮毂属性的值。但是,我似乎无法正常工作。

好吧,我编写了一些代码,但是给了我一个错误:无效的因子水平,生成了NA。

for( i in 1:30) {
    if(mydata$cartype[i] == 1) {
         mydata$wheeltype[i] = 1   

     }

     else {
         mydata$wheeltype[i] = 0

     }
}

我在这里期望的是,如果cartype为1,wheeltype属性将被转换为1,而cartype为2则将wheeltype属性设置为0。我的当前输出将wheeltype属性更改为NA。并以“无效的因子水平,NA生成”作为警告。

1 个答案:

答案 0 :(得分:0)

以下是使用dplyr语法(使用mtcars数据)的几个选项:

library(dplyr)

data("mtcars")

# ifelse
mtcars %>%
  as_tibble(rownames = "model") %>%
  mutate(wheeltype = ifelse(cyl == 6, 1, 0))

# case_when
mtcars %>%
  as_tibble(rownames = "model") %>%
  mutate(wheeltype = case_when(cyl == 6 ~ 1,
                               cyl == 4 ~ 2,
                               cyl == 8 ~ 3,
                               T ~ NA_real_))