2017-04-06 30 views
1

假設我有一個foll結構的數據表。 (一個簡單的場景)取消鍵中的數據表R

dtf <- data.table (CUSTKEY=c("a","b","c","d"),num =  rep(c(2,3)),Revenue=c(500,60,56,450)) 
dtf 
    CUSTKEY num Revenue 
1:  a 2  500 
2:  b 3  60 
3:  c 2  56 
4:  d 3  450 

在某些時候,「收入」列成爲關鍵。 當然,這會重新排列表格。

setkey(dtf,Revenue) 
dtf 
     CUSTKEY num Revenue 
    1:  c 2  56 
    2:  b 3  60 
    3:  d 3  450 
    4:  a 2  500 

如何完全隨機的數據表再次WRT收入列?

(我使用的情況是,我需要運行在此列k均值聚類的無序收入列優選用於處理。但是,這可能是需要其他用途了。)

+0

如果你還想刪除密鑰,你需要'setkey(dtf,NULL)' – SymbolixAU

+0

,並且'data.table'上的大部分操作現在都可以在運行中完成,所以如果設置密鑰的代碼行甚至是必需的,那麼可能值得一看。 – SymbolixAU

+0

知道刪除鍵的NULL方法是很整潔的@SymbolixAU – DashingQuark

回答

2

也許這樣的:

> scramble <- dtf[ dtf[ , sample(.N, .N)] ] 
> scramble 
    CUSTKEY num Revenue 
1:  c 2  56 
2:  b 3  60 
3:  a 2  500 
4:  d 3  450 

它並沒有真正「採取」或持久成功,直到我將它保存到第二個項目(或者也許本身)。