簡體   English   中英

基於與 R 中其他列的組合,使用 ifelse 語句創建新列

[英]Create new column with ifelse statement based on combination with other columns in R

我有一個包含urban_rural 和宗教兩列的數據集。 我想根據這兩列之間的兩個特定交互創建一個新列。 即,urban_not_religious 和urban_religious。

在此網站上進行了一些研究后,我設法根據兩列的組合和 ifelse 語句創建了一個新列,但僅限於滿足這兩個條件的受訪者。 對於所有其他人,我嘗試編寫另一個 ifelse 語句,但它只返回 NA。 我可以給所有具有 NA 的受訪者的值“否”,但我希望將 NA 與具有有效值但不滿足條件的那些分開。 因此,居住在城市地區且不信教的人選擇“是”,所有其他受訪者都選擇“否”,以及 NA。

這是我的數據集示例和我使用的代碼:

structure(list(urban_rural = structure(c(1L, 1L, 2L, 1L, 1L, 
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 1L, 1L, 
1L, 2L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
1L, 1L, 1L, 2L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L), .Label = c("Urban", 
"Rural", "Refugee camp"), class = "factor"), religious = structure(c(2L, 
1L, 2L, 2L, 3L, 2L, 2L, 3L, 1L, 3L, 3L, 1L, 3L, 2L, 2L, 2L, 2L, 
2L, 2L, 2L, 2L, 2L, 2L, 2L, 3L, 3L, 3L, 3L, 2L, 3L, 2L, 2L, 2L, 
3L, 3L, 3L, 2L, 2L, 2L, 2L, 2L, 2L, 3L, 2L, 1L, 2L, 2L, 2L, 2L, 
1L), .Label = c("Religious", "Somewhat religious", "Not religious"
), class = "factor")), row.names = c(NA, 50L), class = "data.frame")

dataset$urban_not_reg <- ""

dataset <- dataset %>%
  mutate(urban_not_reg=ifelse((urban_rural=="Urban")&(religious=="Not religious"),"Yes",NA)) %>%
  mutate(urban_not_reg=ifelse((urban_rural=="Rural")&(urban_rural=="Refugee camp")&(religious=="Religious")&(religious=="Somewhat religious"),"No",NA))

分配"Yes"后,您可以將"No"分配給不是"Urban"任何內容。

library(dplyr)

dataset %>%
  mutate(urban_not_reg = case_when(urban_rural=="Urban" & religious == "Not religious" ~ "Yes", 
                                   urban_rural != "Urban" ~ "No", 
                                   TRUE ~ NA_character_))

這是否有效:

> dataset %>% mutate(urban_not_reg = case_when(urban_rural == 'Urban' & religious == 'Not religious' ~ 'Yes',
+                                             (urban_rural == "Rural" & religious=="Religious") | 
+                                             (urban_rural == "Refugee camp" & religious=="Somewhat religious") | 
+                                             (urban_rural == "Rural" & religious=="Somewhat religious") |
+                                             (urban_rural == "Refugee camp" & religious=="Religious")  ~ 'No',
+                                              TRUE ~ NA_character_))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM