2017-06-05 55 views
-1

我正在尋找使用R 執行任務的優化方法任務:找到分配1和0的方式對應於列條目,如果條目重複,則首次分配1值的發生和休息時間分配0.在R中查找並標記重複項

Example 
ID  assigned value 
2012   1 
2012   0 
2012   0 
2014   1 
2016   1 
2015   1 

這裏id是一個向量包含id和賦值vector將相應地保存值。 我的解決方案:

for(num in 1:(nrow(Final_file)-1)) 
    { 
    if((Final_file[num,'ID']) == (Final_file[(num+1),'ID'])) 
    { 
     assign_value[num] <- c('0') 
      } 
    else 
    { assign_value[num] <- c('1') 
    } 
    } 

這裏Final_file根據ID排序,我的解決方案是工作,但它需要大約40分鐘,以在其上包含21K行的文件執行此邏輯。我想要一個代碼,將花更少的時間來完成相同的任務。

回答

0

?duplicated

#set up data (you should have done this part for us) 
ID <- c(2012L, 2012L, 2012L, 2014L, 2016L, 2015L) 

# one way of getting what you want: 
1-duplicated(ID) 

我只是做這在我的廉價的小筆記本電腦。它在一秒鐘內完成了210萬個ID的向量(儘管ID全部在存儲器中的向量中)

data.frame(ID=ID,assigned.value=1-duplicated(ID)) 
    ID assigned.value 
1 2012    1 
2 2012    0 
3 2012    0 
4 2014    1 
5 2016    1 
6 2015    1 
+0

我的程序運行一個具有7列和21K行的文件,這個操作在最後一列完成並且一個新的矢量將相應地得到值。 – Abhishek

+0

對不起,我不太清楚你在那裏說什麼。 –