1

我有一个我正在尝试操作的数据集。这需要我根据类 cartype 变量值 1 和 2 转换属性 wheeltype 的值。但是我似乎无法使其正常工作。

好吧,我编写了一些代码,但它给了我一个错误:无效因子级别,NA 生成。

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

     }

     else {
         mydata$wheeltype[i] = 0

     }
}

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

4

1 回答 1

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_))
于 2019-04-15T01:27:04.243 回答