繁体   English   中英

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

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM