我对R很新,我试图创建一些新的变量。基本上我的数据集中有个人有母ID的变量(即如果两个人拥有相同的母亲,则此变量的值将相同)。
保持简单开头,假设我想创建一个虚拟变量,如果两个人是兄弟姐妹,则为1。我尝试使用:
dummy <- as.numeric(duplicated(Identifiers_age$MPUBID) = TRUE)
但是对于其中一个兄弟姐妹,我得到的矢量只有1。我该怎么办?
由于
答案 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))