![](/img/trans.png)
[英]Converting multiple dummy variables that are not mutually exclusive into single categorical variable, adding new rows
[英]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_kom
和a_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.