我有一个要操纵的数据集。这就需要我根据类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生成”作为警告。
答案 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_))