2014-09-19 88 views
1

我道歉,不確定如何將data.table插入到問題框中。爲具有多列的唯一行分配唯一的ID名稱

我有這樣一噸的行的數據集:

phylum class family order genus species 
A  B  C  D  E  NA 
A  B  C  D  E  NA 
A  B  C  D  NA NA 
A  B  C  D  E  F 
A  B  C  D  NA NA 
A  B  C  D  E  F 

我希望每個匹配的行被分配一個唯一的ID,例如:

ID phylum class family order genus species 
1 A  B  C  D  E  NA 
1 A  B  C  D  E  NA 
2 A  B  C  D  NA NA 
3 A  B  C  D  E  F 
2 A  B  C  D  NA NA 
3 A  B  C  D  E  F 

我已經嘗試使用GRP有多種方式,但不起作用。 例如: DT2 = DT [,I​​:= GRP,通過=鍵(DT)]

我已經看過其它樣品但一切都基於單或只有2列值分配ID和欲使用6個不同的。任何幫助是極大的讚賞。

+1

什麼'鍵(DT)'這裏? ':='按引用分配。你不需要將它分配回'DT2'順便說一句。 – Arun 2014-09-19 09:48:04

回答

6

與基礎R A液:

df2 <- unique(df) 
df2$ID <- 1:nrow(df2) 
merge(df, df2) 

或使用data.table

dt[, ID := .GRP, by = names(dt)] 
+0

一下子沒辦法做到這一點?爲了這樣做,我只需要刪除很多列。如果我可以指定哪些列用於唯一標識將有所幫助。 – 2014-09-19 15:26:15

+0

嘗試'df2 <-unique(df [,tokeep])'其中'tokeep'是一個數組,指示您要保留哪些列。 – nicola 2014-09-19 15:33:03

+0

這是否意味着所有其他列將被丟棄?我只是想標記那些類似的分類羣,但是要保留指定的列,它們是從哪裏來的,以及看到了多少個。再加上其他一些事情。 – 2014-09-19 15:53:03