删除特定组合的重复项

vto*_*ola 3 r dataframe

我需要从我的数据框中删除一些重复的记录.但只是特定组合的重复.

例如,从这个例子中Id|Status我想删除状态为"B"的重复项.也就是说,状态"A"可以多次出现,但状态"B"每个"Id"只能出现一次

1 A
1 A
1 A
1 A
2 A
2 A
1 B
2 B
2 B
Run Code Online (Sandbox Code Playgroud)

它应该导致:

1 A
1 A
1 A
2 A
2 A
1 B
2 B
Run Code Online (Sandbox Code Playgroud)

这是最好的方式吗?

测试数据:

 test <- data.frame(id=c(1,1,1,1,2,2,1,2,2))
 test$status <- c("A","A","A","A","A","B","B", "B")
Run Code Online (Sandbox Code Playgroud)

42-*_*42- 5

这可能会做你想要的.如果测试相等性,则第二列值为NA时可能会出现问题.x == "B"将是NA,然后结果中将有一行NA.

test <- read.table(text="1 A
 1 A
 1 A
 1 A
 2 A
 2 A
 1 B
 2 B
 2 B")
 test[ !( duplicated(test) & ( test[[2]] %in% "B")) , ]
#-------    
  V1 V2
1  1  A
2  1  A
3  1  A
4  1  A
5  2  A
6  2  A
7  1  B
8  2  B
Run Code Online (Sandbox Code Playgroud)