我想转换一个序数变量(0-2) - 其中0表示无权利,1表示一些权利,2表示完全权限 - 表示二分变量。
原始序数变量按每个国家和年份(国家/年单位)编码。
我想创建一个二分变量(让我们称之为改进),捕获每个国家/年的所有年度积极变化。因此,当它从0变为1(或从0变为2,或从1变为0)时,我希望它为该年和国家的1。否则为零。
下面我举例说明我的数据是怎样的。 “权利”是原始的序数变量。 “我的DICHOTOMOUS”变量是我想用R计算的。我该怎么做?
COUNTRY YEAR RIGHTS MY DICHOTOMOUS
A 1990 0 0
A 1991 0 0
A 1992 0 0
A 1993 1 1
A 1994 0 0
B 1990 1 1
B 1991 1 0
B 1992 1 0
B 1993 1 0
B 1994 1 0
请注意,原始数据也可以去另一个,即它可以变为负数。我不想为这个二分变量的负面变化编码。
答案 0 :(得分:0)
可能必须做一系列ifelse()
陈述。但话又说回来,我可能会错过阅读你的问题。下面张贴了一个例子。
MY.DATA$MY.DICHOTOMOUS <- with(MY.DATA,ifelse(COUNTRY=="A",RIGHTS,ifelse(COUNTRY=="B"&YEAR==1990,1,factor(RIGHTS)))`
答案 1 :(得分:0)
这假设您不考虑从1中的权利开始作为1的二分法:
x <- rights
n <- length(x)
dichotomous <- c(0, as.numeric(x[-1] - x[-n] == 1))
答案 2 :(得分:0)
我们可以使用diff
df1$dichotomous <- +c(FALSE,diff(df1$RIGHTS)==1)
df1$dichotomous
#[1] 0 0 0 1 0 1 0 0 0 0