我想将一个序数变量(0-2)(其中0是无权限,1是某些权限,2是完全权限)转换为二分变量。
原始序数变量按每个国家和年份(国家/年份单位)进行编码。
我想创建一个二分法变量(我们称之为改进),捕捉每个国家每年的所有年度积极变化。因此,当它从0到1(或从0到2,或从1到0)时,我希望它是该年份和国家的1。否则为零。
下面我举了一个我的数据的例子。"RIGHTS"是原始的序数变量。"我的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
请注意,原始数据也可能会另一个数据消失,即可能为负数。我不想为这个二分变量的负变化编码。
我们可以使用diff
df1$dichotomous <- +c(FALSE,diff(df1$RIGHTS)==1)
df1$dichotomous
#[1] 0 0 0 1 0 1 0 0 0 0
这假设您不考虑以权利中的1作为二分法中的1:
x <- rights
n <- length(x)
dichotomous <- c(0, as.numeric(x[-1] - x[-n] == 1))
可能需要执行一系列ifelse()
语句。但话说回来,我可能会错过阅读你的问题。下面发布了一个示例。
MY.DATA$MY.DICHOTOMOUS <- with(MY.DATA,ifelse(COUNTRY=="A",RIGHTS,ifelse(COUNTRY=="B"&YEAR==1990,1,factor(RIGHTS)))`