2015-10-29 29 views
1

我想將一個序數變異(0-2) - 其中0不是權利,1是一些權利和2個完整權利 - 轉換爲二分變量。如何將有序變量轉換(計算)爲R中的二分法?

原始序變量是編碼爲每個國家和年份(國家年單位)。

我想創建一個二元變量(我們稱之爲改進),捕獲每個國家一年的所有年度積極變化。所以當它從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 

請注意,原始數據也可以轉到另一個,也就是說它可以變爲負值。我不想編碼這個二分變量的負面變化。

回答

0

我們可以使用diff

df1$dichotomous <- +c(FALSE,diff(df1$RIGHTS)==1) 
df1$dichotomous 
#[1] 0 0 0 1 0 1 0 0 0 0 
+0

感謝 - 它的工作! – FKG

0

可能需要做一系列的ifelse()聲明。但後來我可能會錯過閱讀你的問題。下面是一個例子。

MY.DATA$MY.DICHOTOMOUS <- with(MY.DATA,ifelse(COUNTRY=="A",RIGHTS,ifelse(COUNTRY=="B"&YEAR==1990,1,factor(RIGHTS)))` 
0

這是假設你沒有考慮權二分開始以1爲1:

x <- rights 
n <- length(x) 
dichotomous <- c(0, as.numeric(x[-1] - x[-n] == 1)) 
相關問題