,我有以下數據:如何識別唯一的行和獨特的觀察的data.frame,基於時間變量
d <- data.frame(id=c(1,2,3,4,5,6,7),
year=c(1999,1999,1999,2000,2000,2000,2000),
var1=c(1,1,2,1,4,1,8),
var2=c(1,1,2,1,5,2,0),
var3=c(0,0,0,0,7,0,0))
> d
id year var1 var2 var3
1 1 1999 1 1 0
2 2 1999 1 1 0
3 3 1999 2 2 0
4 4 2000 1 1 0
5 5 2000 4 5 7
6 6 2000 1 2 0
7 7 2000 8 0 0
我要評估data.frame的每一行,並返回一個得分一個名爲'梳子'的新變量。
如果行持有間VAR1-VAR3的組合是:
- 往年從未觀察到(但元素是) - >分配梳= 1
- 包含被從未見過的元件往年 - >分配梳= 2
- 往年從未觀察到並保持一個新的元素 - >分配梳= 3
- 往年觀察 - >分配梳= 0
一些旁註:
- 發生的順序並不重要(1,1,2 == 1,2,1)
- 同年重複組合可以被標記相同
在這個例子中的數據,這應該是這樣的:
d2 <- data.frame(id=c(1,2,3,4,5,6,7),
year=c(1999,1999,1999,2000,2000,2000,2000),
var1=c(1,1,2,1,4,1,8),
var2=c(1,1,2,1,5,2,0),
var3=c(0,0,0,0,7,0,0),
comb=c(3,3,3,0,3,1,2))
> d2
id year var1 var2 var3 comb
1 1 1999 1 1 0 3
2 2 1999 1 1 0 3
3 3 1999 2 2 0 3
4 4 2000 1 1 0 0
5 5 2000 4 5 7 3
6 6 2000 1 2 0 1
7 7 2000 8 0 0 2
注意,第二行被賦予梳= 3,因爲它是第一年,我們觀察到combinatio納秒。如果這個觀察結果在年= 200(如第4行),則分配一個零。
這可能嗎?任何幫助深表感謝!
在你的輸出中,第二行似乎已經存在於那一年,爲什麼不是0? – adaien
你能在輸出中寫出詳細的筆記來描述你想要的樣子嗎? – InfiniteFlashChess
@adiana:我想在給定的年份中標記每個重複的觀察結果。 –