簡體   English   中英

根據條件(互斥類別)將不同的虛擬變量組合成一個分類變量?

[英]Combining different dummy variables into a single categorical variable based on conditions (mutually exclusive categories)?

我是R的新手,並嘗試將基於三個虛擬變量的新變量創建為具有 4 個級別(0、1、2、3)的單個分類變量,其中應該包含互斥的類別。

我想要的 output 有一些規格。 如果 g_kom = 0,則新變量的值應為 0。如果 g_kom = 1,則新變量的值應為 1。如果 g_kom = 1 且 v_kom = 1,則新變量的值應為 2。如果g_kom = 1 且 v_kom 為 1 且 a_kom 為 1,則新變量的值應為 3。此外,級別應從 0-3 排序。

挑戰在於我創建的虛擬變量不是來自單個分類變量,因此這些組在不同的虛擬變量之間不是互斥的。

我已經嘗試了以下代碼,但我最終得到的只是一個二分變量,而不是一個具有 4 個級別的變量。 我想這是因為這些組在不同的虛擬變量中並不互斥,但這是我需要幫助的部分。

mydata1 <- mydata %>% mutate(kat_kom1 = case_when((g_kom == 0) ~ 0,
                                (g_kom == 1) ~ 1,
                                (g_kom == 1 & v_kom == 1) ~ 2,
                                (g_kom == 1 & v_kom == 1 & a_kom == 1) ~ 3))

正如我之前所說,我是 R 的初學者,所以希望你們中的一些有更多經驗的人能夠為我的問題提供答案。 謝謝。

嘗試在幾種情況下也包括v_koma_kom ,而不僅僅是下一個。 未經測試,因為沒有數據示例。

mydata1 <- mydata %>% 
  mutate(kat_kom1 = case_when(
    (g_kom == 0) ~ 0L,
    (g_kom == 1 & v_kom == 0 & a_kom == 0) ~ 1L,
    (g_kom == 1 & v_kom == 1 & a_kom == 0) ~ 2L,
    (g_kom == 1 & v_kom == 1 & a_kom == 1) ~ 3L,
    TRUE ~ NA_integer_)
  )

我們可以使用鍵/值數據集並進行連接

library(dplyr)
keydat <- data.frame(g_kom = 1, v_kom = c(0, 0, 1, 1), 
                       a_kom = c(0, 1, 0, 1), kat_kom1 = c(1, 4, 2, 3))

left_join(mydata, keydat) %>%
     mutate(kat_kom1 = replace(kat_kom1, g_kom == 0, 0))

暫無
暫無

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

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