仅消除某些列中的重复行,将所有列保留在 R 中
Eliminate duplicated rows only in certain columns, keeping all the columns in R
我只向 Select
发送在某些列(ID、position1、position2 和 Name)中不重复的数据。小时不同并不重要,该行仍将被视为重复。问题是我需要修改 Hour
列
| 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
在示例中,我们可以看到第 1 行和第 2 行在 ID、position1、position2 和 Name 上重复,所以我想删除其中一个,无所谓。我尝试使用
来做到这一点
df <- sqldf('SELECT DISTINCT ID, position1, position2, Name FROM df')
问题是我丢失了小时列。如何保留df的相同列,但只删除某些列中相等的行。
这是我需要的结果:
| 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
怎么样:
df[!duplicated(df[,c(1,2,3,5)]),]
其中 1、2、3、5 是您要考虑的列。
示例:
> 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')
我只向 Select
发送在某些列(ID、position1、position2 和 Name)中不重复的数据。小时不同并不重要,该行仍将被视为重复。问题是我需要修改 Hour
| 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
在示例中,我们可以看到第 1 行和第 2 行在 ID、position1、position2 和 Name 上重复,所以我想删除其中一个,无所谓。我尝试使用
来做到这一点df <- sqldf('SELECT DISTINCT ID, position1, position2, Name FROM df')
问题是我丢失了小时列。如何保留df的相同列,但只删除某些列中相等的行。
这是我需要的结果:
| 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
怎么样:
df[!duplicated(df[,c(1,2,3,5)]),]
其中 1、2、3、5 是您要考虑的列。
示例:
> 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')