我有這個資料集:
$ 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 中獲得它?
謝謝!
uj5u.com熱心網友回復:
與%in%和>一起使用邏輯運算,將它們放在一起&并將邏輯值強制為整數
df$fra <- as.numeric(df$educ_cat %in% c(5, 6) & df$pol_sof > 0.6)
uj5u.com熱心網友回復:
你可以試試這個。
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)
uj5u.com熱心網友回復:
我們可以使用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
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/397792.html
下一篇:如何使用互補資訊連接多個資料幀
