我的数据集如下所示:
name position type
A 12 S
B 13 T
C 12 S
D 12 T
E 11 S
F 10 S
我想删除具有重复位置和类型的行。
我尝试使用duplicated
函数查找重复的行,但我不知道如何删除带有重复值的所有行。
dup = db[duplicated(db[2:3]),]
我想删除具有相同位置和类型但名称不同的行。 我想要的输出是:
name position type
B 13 T
D 12 T
E 11 S
F 10 S
答案 0 :(得分:4)
duplicated
仅从重复值开始返回TRUE。要返回所有重复的元素,我们可能需要反向应用duplicated
,即从最后一个值到第一个值并使用OR
条件,即|
,否定和子集数据集。
db[!(duplicated(db[2:3])|duplicated(db[2:3], fromLast=TRUE)),]
# name position type
# 2 B 13 T
# 4 D 12 T
# 5 E 11 S
# 6 F 10 S
答案 1 :(得分:1)
dplyr包使用直观易读的代码执行此操作。
以下是一个玩具示例,从-Dlog4j.configuration=file:///C:/[folderName]/apps/[appName]/config/log4j.properties
获取mtcars
和cyl
没有重复值的行:
gear
cyl和gear的这两种组合是唯一独特的组合,您可以通过以下方式确认:
library(dplyr)
mtcars %>%
group_by(cyl, gear) %>%
filter(n() == 1) %>%
ungroup()
Source: local data frame [2 x 11]
mpg cyl disp hp drat wt qsec vs am gear carb
(dbl) (dbl) (dbl) (dbl) (dbl) (dbl) (dbl) (dbl) (dbl) (dbl) (dbl)
1 21.5 4 120.1 97 3.70 2.465 20.01 1 0 3 1
2 19.7 6 145.0 175 3.62 2.770 15.50 0 1 5 6