2016-05-10 6 views
1

にdata.frameに一度だけ発生列Iは、次のサンプル持って削除:I因子Idのレベルが発生する行を削除したい因子のレベルがR

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) 

をdata.frameでは1回のみです。例えばここでは、Id = 4の行を削除し、他の行は保持します。

Iは次いで data$duplicated <- duplicated(data$Id)subset(data, data$duplicated=="FALSE"

と共に使用するが、各因子は最初 時間発生したとき、これはまた、最初の行を削除して(すなわちId=1又はId=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」を試してください。 –

答えて

3
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

残念ながら、それは大きなファイル(15百万行)で動作しません、私は通常持っていないラムの問題があります! – Floni

関連する問題