2016-08-02 181 views
0

以下循環需要時間。有沒有辦法以更節省時間的方式來解決這個問題?以下data.table由27個變量和600多個觀察值組成。R循環優化/循環太耗時

data <- read.table("file.txt", header = T, sep= "|") 
colnames(data)[c(1)] <- c("X") 
data <- as.data.table(data) 
n=1; 
vector <- vector() 
for(i in 2:nrow(data)) 
{ 
    if(data[["X"]][i] != data[["X"]][i-1]) 
    { 
    n=1; vector[i]=1} 
else { 
    n=n+1; vector[i]=n}} 

基本上,我需要指數X的唯一入口,即第一次就出現,第二時間就出現等的每外觀然後合併這對現有的數據作爲附加列。不過,我在編輯矢量時獲得了股票。

謝謝。

+0

更耗時的方法? – MichaelChirico

+0

'vector'在哪裏啓動? –

+0

也是'n'在哪裏發起的...... – MichaelChirico

回答

3

首先,使用fread

DT <- fread("file.txt", sep = "|") 

接下來,使用setnames

setnames(DT, 1, "X") 

最後,使用rowid

DT[ , vector := rowid(X)]  
+0

它工作...謝謝! –