我对R很新,我试图创建一些新的变量。基本上我的数据集中有个人的母亲身份是变量(即如果两个人有同一个母亲,这个变量的值将是相同的)。在R中创建虚拟变量
保持简单开始,让我们说我想创建一个虚拟变量= 1,如果两个人是兄弟姐妹。我尝试过使用:
dummy <- as.numeric(duplicated(Identifiers_age$MPUBID) = TRUE)
但是我得到的矢量只有一个兄弟姐妹中的一个。我该怎么做?
感谢
我对R很新,我试图创建一些新的变量。基本上我的数据集中有个人的母亲身份是变量(即如果两个人有同一个母亲,这个变量的值将是相同的)。在R中创建虚拟变量
保持简单开始,让我们说我想创建一个虚拟变量= 1,如果两个人是兄弟姐妹。我尝试过使用:
dummy <- as.numeric(duplicated(Identifiers_age$MPUBID) = TRUE)
但是我得到的矢量只有一个兄弟姐妹中的一个。我该怎么做?
感谢
如果你的目标是返回0和1的地方是1,如果观测单元具有同级的载体,那么你要包括第二duplicated
语句fromLast = TRUE。
第一个重复函数将为第一个兄弟之后的MPUBID中的同胞数量返回一个1,第二个重复的函数将拾取第一个兄弟。
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))
你在看一个总和?或者你想分组?没有一个虚拟的数据集和预期的输出,很难说出你在做什么之后(兄弟姐妹的数量或者是否至少有1个) – Tensibai
[编辑]你的问题来澄清它,评论 – Tensibai
对不起,我应该更清楚,我只是寻找一个二进制变量= 1,如果个人至少有一个兄弟姐妹。 – Milhouse