簡體   English   中英

從 R 的數據框中的現有列創建新的競爭變量(使用 case_when 函數)

[英]Creating a New Race Variable from Existing Column in Data Frame in R (with case_when function)

我正在處理來自全國健康訪談調查的數據,並試圖將種族變量簡化為 5 個桶。 我想從現有數據中創建一個名為“RACE”的新列,其中包括亞洲 =1、黑人=2、白人(非西班牙裔)=3、西班牙裔=4、其他=5。 目前,種族變量的標題為“RACEA”,包括幾個表示種族的代碼,如下所示:

411, 412, 416, 434= Asian 200=Black 100=White 310,580,600=Other

但是,表示西班牙裔的變量是一個名為 HISPETH 的單獨變量。 有了這個變量,

10=non-Hispanic 20,23,30,40,50,61,62,63,70=Hispanic

因此,要創建白色(非西班牙裔)和西班牙裔值,我需要 R 來使用 RACEA 和 HISPETH 的列值。

這是我嘗試運行以執行所有這些操作的代碼,但我遇到了錯誤消息,即“object 長度越長不是更短 object 長度的倍數”,用於顯示 HISPETH 值列表的部分以下。

我應該怎么辦? 我願意使用除 case_when 之外的其他函數,這正是我過去使用過的。 謝謝!

`NHIS_test <- NHIS1 %>% 
      mutate(RACE = case_when(RACEA <= 411 ~ '1', 
                              RACEA <= 412 ~ '1', 
                              RACEA <= 416 ~ '1', 
                              RACEA <= 434 ~ '1', 
                              RACEA <= 200 ~ '2',
                              RACEA <= 100 & HISPETH <= 10 ~ '3',
                              HISPETH <= c(20:70) ~ '4', 
                              RACEA<=100 & HISPETH <= c(20,23,30,40,50,61,62,63,70) ~ '4', 
                              RACEA <= 310 ~ '5', 
                              RACEA <= 580 ~ '5',
                              RACEA <= 600 ~ '5',
                              TRUE ~ 'NA'))`

要比較單個值,您應該使用== ,比較多個值使用%in%

library(dplyr)

NHIS_test <- NHIS1 %>% 
                mutate(RACE = case_when(
                  RACEA %in% c(411, 412, 416, 434) ~ 1, 
                  RACEA == 200 ~ 2, 
                  RACEA == 100 & HISPETH == 10 ~ 3,
                  RACEA == 100 & HISPETH %in% c(20,23,30,40,50,61,62,63,70) ~ 4, 
                  RACEA %in% c(310, 580, 600) ~ 5))

如果上述條件都不滿足,則默認返回NA

暫無
暫無

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

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