在R

时间:2016-07-22 12:47:36

标签: r dummy-variable

我对R很新,我试图创建一些新的变量。基本上我的数据集中有个人有母ID的变量(即如果两个人拥有相同的母亲,则此变量的值将相同)。

保持简单开头,假设我想创建一个虚拟变量,如果两个人是兄弟姐妹,则为1。我尝试使用:

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

但是对于其中一个兄弟姐妹,我得到的矢量只有1。我该怎么办?

由于

2 个答案:

答案 0 :(得分: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。

答案 1 :(得分:0)

dplyr答案:

library(dplyr)

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