删除行

问题描述:

我有以下示例:删除行

Id = c(1, 1,2,2,2,1,4,3,3,3) 
long = c("60.466681", "60.664116", "60.766690", "60.86879", "60.986569","60.466681", "60.664116", "60.766690", "60.86879", "60.986569" ) 
data = data.frame(Id, long) 

我想其中Id的因子的水平发生,除去线data.frame中只有一次。例如,在这里,我会删除id = 4的行并保留其他行。

我与 data$duplicated <- duplicated(data$Id)然后 subset(data, data$duplicated=="FALSE"

使用但在发生了所述第一 每个时间因素这也移除第一线(即,具有Id=1Id=2第一行)

Id  long duplicated 
1 1 60.466681  FALSE 
2 1 60.664116  TRUE 
3 2 60.766690  FALSE 
4 2 60.86879  TRUE 
5 2 60.986569  TRUE 
6 1 60.466681  TRUE 

有没有简单的方法来做到这一点?

谢谢!

+0

尝试'gdata :: duplicated2' –

library(plyr) 
data2<-ddply(data,.(Id),function(x){ 
    if(nrow(x)==1){ 
    return(NULL) 
    } 
    else{ 
    return(x) 
    } 
}) 

> data2 
    Id  long 
1 1 60.466681 
2 1 60.664116 
3 1 60.466681 
4 2 60.766690 
5 2 60.86879 
6 2 60.986569 
7 3 60.766690 
8 3 60.86879 
9 3 60.986569 
+0

这将做的伎俩,谢谢! – Floni

+0

不幸的是,它不适用于大文件(一千五百万行),有一个我通常没有的内存问题! – Floni