在R中查找和标记重复项

时间:2017-06-05 08:32:04

标签: r

我一直在寻找一种使用R来完成任务的优化方法 任务:找到分配1和0的方式对应于列条目,如果条目重复,则在第一次出现值时分配1,并且休息时间分配0。

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

这里id是一个包含id的向量,赋值向量将相应地保存值。 我的解决方案:

   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进行排序,我的解决方案正在运行,但是在包含21K行的文件上执行此逻辑大约需要40分钟。我想要一个代码,花费更少的时间来完成同样的任务。

1 个答案:

答案 0 :(得分: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