[英]How transform (calculate) an ordinal variable to a dichotomous in R?
我想将一个序数变量 (0-2)——其中 0 是没有权利,1 是一些权利,2 是完全权利——转换为一个二分变量。
原始序数变量针对每个国家和年份(国家-年份单位)进行编码。
我想创建一个二分变量(让我们称其为Improvement ),捕获每个国家/地区的所有年度积极变化。 因此,当它从 0 到 1(或从 0 到 2,或从 1 到 0)时,我希望该年份和国家/地区为 1。 否则为零。
下面我举例说明我的数据的样子。 “RIGHTS”是原始序数变量。 “MY 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
可能需要执行一系列ifelse()
语句。 但话又说回来,我可能会错过阅读你的问题。 下面发布了一个示例。
MY.DATA$MY.DICHOTOMOUS <- with(MY.DATA,ifelse(COUNTRY=="A",RIGHTS,ifelse(COUNTRY=="B"&YEAR==1990,1,factor(RIGHTS)))`
这假设您不考虑从权利中的 1 开始作为二分法中的 1:
x <- rights
n <- length(x)
dichotomous <- c(0, as.numeric(x[-1] - x[-n] == 1))
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.