2016-07-22 165 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))