我对 R 很陌生,我正在尝试创建一些新变量。基本上,我的数据集有一个带有母亲 ID 变量的个体(即,如果两个个体有相同的母亲,这个变量的值将是相同的)。
开始时保持简单,假设我想创建一个虚拟变量,如果两个人是兄弟姐妹,则该变量 = 1。我尝试使用:
dummy <- as.numeric(duplicated(Identifiers_age$MPUBID) = TRUE)
但是对于其中一个兄弟姐妹,我得到的向量只有 = 1。我应该做什么?
谢谢
我对 R 很陌生,我正在尝试创建一些新变量。基本上,我的数据集有一个带有母亲 ID 变量的个体(即,如果两个个体有相同的母亲,这个变量的值将是相同的)。
开始时保持简单,假设我想创建一个虚拟变量,如果两个人是兄弟姐妹,则该变量 = 1。我尝试使用:
dummy <- as.numeric(duplicated(Identifiers_age$MPUBID) = TRUE)
但是对于其中一个兄弟姐妹,我得到的向量只有 = 1。我应该做什么?
谢谢
如果您的目标是返回一个由 0 和 1 组成的向量,如果观察单元有兄弟,则该向量为 1,那么您希望包含第二duplicated
条语句 fromLast=TRUE。
第一个复制的函数将返回一个 1,表示与第一个兄弟之后的 MPUBID 中的兄弟一样多,第二个复制的函数将拾取第一个兄弟。
hasSiblings <- as.integer(duplicated(Identifiers_age$MPUBID) |
duplicated(Identifiers_age$MPUBID, fromLast=TRUE))
是|
向量逻辑运算符 OR。请注意,它duplicated
返回一个逻辑向量,因此您不必像在问题中那样在其后包含 =TRUE。
一个dplyr
答案:
library(dplyr)
Identifiers_age %>%
group_by(MPUBID) %>%
mutate(hasSiblings = as.integer(n() > 1))