2016-07-18 11 views
0

Selectには、特定の列(ID、位置1、位置2、名前)に重複していないデータだけがあります。時が違っていても、行は重複しているとみなされます。問題は、私は、我々は、行1と2は、ID、POSITION1、POSITION2と名前に複製されていることがわかります例では、列の時間特定の列でのみ重複行を削除し、すべての列を保持R

| ID | position1 | position2| Hour | Name 
--------------------------------------------------------- 
| ABD1 |  54340 |  33254| 10:42| Adam 
| ABD1 |  54340 |  33254| 10:52| Adam 
| TGF5 |  54545 |  54545| 11:25| Mike 
| ABD1 |  84544 |  24424| 12:06| Adam 
| AGF4 |  25466 |  45444| 10:53| Mike 
| TGF5 |  44787 |  25847| 09:05| Rose 

をmanteinする必要があるということですので、私はそれらのいずれかを排除したいですそれは問題ではありません。私はこれを行うtryng

df <- sqldf('SELECT DISTINCT ID, position1, position2, Name FROM df') 

問題は、私は列の時間を失ったことです。どのように私はdfの同じ列をconsinerことができますが、特定の列で等しい列だけを削除します。

1,2,3,5はあなたが考慮することにしたい列です
df[!duplicated(df[,c(1,2,3,5)]),] 

| ID | position1 | position2| Hour | Name 
--------------------------------------------------------- 
| ABD1 |  54340 |  33254| 10:42| Adam 
| TGF5 |  54545 |  54545| 11:25| Mike 
| ABD1 |  84544 |  24424| 12:06| Adam 
| AGF4 |  25466 |  45444| 10:53| Mike 
| TGF5 |  44787 |  25847| 09:05| Rose 

答えて

0

方法:

これは私が必要とする結果です。

例:

また
> df 
    ID Pos1 Pos2 Hour Name 
1 ABD1 54340 33254 10:42 Adam 
2 ABD1 54340 33254 10:52 Adam 
3 TGF5 54545 54545 11:25 Mike 
4 ABD1 84544 24424 12:06 Adam 
5 AGF4 25466 45444 10:53 Mike 
6 TGF5 44787 25847 09:05 Rose 
> 
> 
> df[!duplicated(df[,c(1,2,3,5)]),] 
    ID Pos1 Pos2 Hour Name 
1 ABD1 54340 33254 10:42 Adam 
3 TGF5 54545 54545 11:25 Mike 
4 ABD1 84544 24424 12:06 Adam 
5 AGF4 25466 45444 10:53 Mike 
6 TGF5 44787 25847 09:05 Rose 
> 

library(sqldf) 
sqldf('SELECT * 
     FROM df 
     GROUP BY ID, position1, position2, Name') 
+0

これが争点に取り組むのではなく、SQLコマンドを学習避けるための回避策を提供しません。 –

関連する問題