如何将R中的序数变量转换(计算)为二分变量



我想将一个序数变量(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)))`

最新更新