2016-07-22 153 views
0

我對R很新,我試圖創建一些新的變量。基本上我的數據集中有個人的母親身份是變量(即如果兩個人有同一個母親,這個變量的值將是相同的)。在R中創建虛擬變量

保持簡單開始,讓我們說我想創建一個虛擬變量= 1,如果兩個人是兄弟姐妹。我嘗試過使用:

dummy <- as.numeric(duplicated(Identifiers_age$MPUBID) = TRUE) 

但是我得到的矢量只有一個兄弟姐妹中的一個。我該怎麼做?

感謝

+5

你在看一個總和?或者你想分組?沒有一個虛擬的數據集和預期的輸出,很難說出你在做什麼之後(兄弟姐妹的數量或者是否至少有1個) – Tensibai

+0

[編輯]你的問題來澄清它,評論 – Tensibai

+0

對不起,我應該更清楚,我只是尋找一個二進制變量= 1,如果個人至少有一個兄弟姐妹。 – Milhouse

回答

3

如果你的目標是返回0和1的地方是1,如果觀測單元具有同級的載體,那麼你要包括第二duplicated語句fromLast = TRUE。

第一個重複函數將爲第一個兄弟之後的MPUBID中的同胞數量返回一個1,第二個重複的函數將拾取第一個兄弟。

hasSiblings <- as.integer(duplicated(Identifiers_age$MPUBID) | 
          duplicated(Identifiers_age$MPUBID, fromLast=TRUE)) 

|是矢量邏輯運算符OR。請注意,duplicated會返回一個邏輯向量,所以您不必像在問題中一樣包含= TRUE。

0

一個dplyr答案:

library(dplyr) 

Identifiers_age %>% 
    group_by(MPUBID) %>% 
    mutate(hasSiblings = as.integer(n() > 1))