ฉันต้องการลบแถวที่มีค่าเฉพาะสำหรับคอลัมน์ที่ตรงกับค่าในกรอบข้อมูลอื่น
a<-c(1,1,2,2,2,4,5,5,5,5)
b<-c(10,10,22,30,30,30,40,40,40,40)
c<-c(1,2,1,2,2,2,2,1,1,2)
d<-rnorm(1:10)
data<-data.frame(a,b,c,d)
a<-c(2,5)
b<-c(30,40)
c<-c(2,1)
x<-data.frame(a,b,c)
เพื่อที่คุณจะได้เป็น:
a b c d
1 10 1 -0.2509255
1 10 2 0.4142277
2 22 1 -0.1340514
4 30 2 -1.5372009
5 40 2 1.9001932
5 40 2 -1.2825212
ฉันลองทำสิ่งต่อไปนี้ซึ่งไม่ได้ผล:
y<-data[!data$a==a & !data$b==b & !data$c==c,]
y<-subset(data, !data$a==x$a & !data$b==x$b & !data$c==x$c)
ฉันยังพยายามตั้งค่าสถานะสิ่งที่ควรลบออกเพื่อย่อยในขั้นตอนที่สอง แต่ก็ไม่ได้ผลเช่นกัน:
y<-data
y$rm<-ifelse(y$a==x$a & y$b==x$b & y$c==x$c, 1, 0)
"ข้อมูล" และ "x" ที่แท้จริงนั้นยาวกว่ามากและมีจำนวนแถวที่แปรผันในข้อมูลที่ตรงกับแต่ละแถวใน x