我有一个社会调查的数据。其中一个分类变量是教育。它将人口分为6组:"1“表示受过小学教育的人,"2”表示具有O级水平的人,"3“表示受过中学教育的人。学士学位4分。硕士5人,PhD 6人。
wage age sex edu area satisf
1 NA 76 2 6 1 <NA>
2 17000 26 2 6 1 1
3 NA 74 1 6 1 <NA>
4 NA 73 2 6 1 <NA>
5 NA 49 2 5 1 1
6 25000 31 1 6 1 2我之前运行了一个回归,并决定我不需要类别1-3。因此,我希望有以下结构:
DUMMY1(edu)={█(1,&edu="1" ,2,3@0,&edu=else)┤
DUMMY2(edu)={█(1,&edu="4" @0,&edu=else)┤
DUMMY3(edu)={█(1,&edu="5" @0,&edu=else)┤
DUMMY4(edu)={█(1,&edu="6" @0,&edu=else)┤我需要学习如何使用mutate和ifelse函数。我当前的命令如下:
vova5 <- mutate(vova4,bedu=ifelse(vova4$edu<=3,vova4$edu2 <- 1,
vova4$edu2 <- vova4$edu-2))但它似乎不起作用。
发布于 2019-09-14 20:20:54
如果没有你的数据,我会尝试case_when,比如:
数据示例:
vova4 <- data.frame(
edu = c(1, 2, 3, 4, 4, 5, 5, 6, 6),
age = c(70, 56, 66, 67, 34, 55, 33, 44, 32))试试这个:
library(tidyverse)
vova5 <- vova4 %>%
mutate(Bedu = case_when(edu<=3 ~ 1,
edu==4 ~ 2,
edu==5 ~ 3,
TRUE ~ 4))
vova5或者:
vova5 <- vova4 %>%
mutate(Bedu = case_when(edu<=3 ~ 1,
edu==4 ~ 2,
edu==5 ~ 3,
edu==6 ~ 4)) 您将获得:
> vova5
edu age Bedu
1 1 70 1
2 2 56 1
3 3 66 1
4 4 67 2
5 4 34 2
6 5 55 3
7 5 33 3
8 6 44 4
9 6 32 4https://stackoverflow.com/questions/57935284
复制相似问题