在多个条件下生成新变量

Generate new variable on multiple conditions

我有这个数据集:

$ id : num 805 805 805 851 851 851...

$ educ_cat: num 5 5 5 5 5 6 6 6 6 6 3 3 3 3 ...

$ pol_sof : num 1 1 1 0.8 1 1 1 1 0.8 1 0.6 0.4 0.4 ...

我想要的是创建一个逻辑变量 fra 0-1,基于两个条件:

如果 educ_cat = 5 或 6 AND pol_sof>0.6,则受访者应得 1。否则应得 0。

如何在R中获得这个?

谢谢!

你可以试试这个。

df1$fra <- df1$educ_cat == 5 | df1$educ_cat == 6 & df1$pol_sof > 0.6
# or
df1$fra2 <- (df1$educ_cat == 5 | df1$educ_cat == 6 & df1$pol_sof > 0.6)*1
df1
   educ_cat pol_sof   fra fra2
1         5     1.0  TRUE    1
2         5     1.0  TRUE    1
3         5     1.0  TRUE    1
4         5     0.8  TRUE    1
5         5     1.0  TRUE    1
6         6     1.0  TRUE    1
7         3     0.3 FALSE    0
8         6     1.0  TRUE    1
9         6     0.1 FALSE    0
10        6     0.8  TRUE    1
11        6     1.0  TRUE    1
12        3     0.6 FALSE    0
13        3     0.4 FALSE    0
14        3     0.4 FALSE    0

数据

educ_cat <- c(5, 5, 5, 5, 5, 6, 3, 6, 6, 6, 6, 3, 3, 3)
pol_sof <- c(1, 1, 1, 0.8, 1, 1, 0.3, 1, 1, 0.8, 1, 0.6, 0.4, 0.4)
df1 <- data.frame(educ_cat, pol_sof)

%in%> 使用逻辑运算,将它们与 & 放在一起并将逻辑值强制为整数

df$fra <- as.numeric(df$educ_cat %in% c(5, 6) & df$pol_sof > 0.6)

我们可以使用条件为 ifelse 的语句:

library(dplyr)

df1 %>% 
  mutate(fra = ifelse(educ_cat==5 | educ_cat==6 & pol_sof > 0.6, TRUE, FALSE))
  educ_cat pol_sof   fra
1         5     1.0  TRUE
2         5     1.0  TRUE
3         5     1.0  TRUE
4         5     0.8  TRUE
5         5     1.0  TRUE
6         6     1.0  TRUE
7         3     0.3 FALSE
8         6     1.0  TRUE
9         6     1.0  TRUE
10        6     0.8  TRUE
11        6     1.0  TRUE
12        3     0.6 FALSE
13        3     0.4 FALSE
14        3     0.4 FALSE