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

时间:2015-10-29 23:12:24

标签: r machine-learning

我想转换一个序数变量(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

请注意,原始数据也可以去另一个,即它可以变为负数。我不想为这个二分变量的负面变化编码。

3 个答案:

答案 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