0

我对 R 很陌生,我正在尝试创建一些新变量。基本上,我的数据集有一个带有母亲 ID 变量的个体(即,如果两个个体有相同的母亲,这个变量的值将是相同的)。

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

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

但是对于其中一个兄弟姐妹,我得到的向量只有 = 1。我应该做什么?

谢谢

4

2 回答 2

3

如果您的目标是返回一个由 0 和 1 组成的向量,如果观察单元有兄弟,则该向量为 1,那么您希望包含第二duplicated条语句 fromLast=TRUE。

第一个复制的函数将返回一个 1,表示与第一个兄弟之后的 MPUBID 中的兄弟一样多,第二个复制的函数将拾取第一个兄弟。

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

|向量逻辑运算符 OR。请注意,它duplicated返回一个逻辑向量,因此您不必像在问题中那样在其后包含 =TRUE。

于 2016-07-22T12:52:50.813 回答
0

一个dplyr答案:

library(dplyr)

Identifiers_age %>%
  group_by(MPUBID) %>%
  mutate(hasSiblings = as.integer(n() > 1))
于 2016-07-22T13:02:54.620 回答