การลบเฟรมข้อมูลแถวที่ซ้ำกันใน R [ปิด]


71

ฉันจะลบแถวที่ซ้ำกันออกจาก data frame ตัวอย่างนี้ได้อย่างไร

A   1
A   1
A   2
B   4  
B   1
B   1
C   2
C   2

ฉันต้องการลบรายการที่ซ้ำตามคอลัมน์ทั้งสอง:

A   1
A   2
B   4
B   1
C   2

คำสั่งซื้อไม่สำคัญ


@ ทำไมไม่ควรถูกย้ายไปที่ SO?
llrs

@Llopis ใช่ แต่มันสายเกินไปที่จะทำในตอนนี้ - และมันก็สายเกินไปเมื่อเราปิดมันในตอนแรก คำถามประเภทนี้ได้รับการพิจารณา (เส้นขอบ) ในหัวข้อเมื่อหลายปีก่อน แต่ในปัจจุบันจะมีการย้ายข้อมูลอย่างรวดเร็ว
whuber

คำตอบ:


115

unique()แน่นอนคำตอบคำถามของคุณ duplicated()แต่ฟังก์ชั่นอื่นที่เกี่ยวข้องและน่าสนใจที่จะบรรลุวัตถุประสงค์เดียวกันคือ

มันทำให้คุณมีความเป็นไปได้ที่จะค้นหาแถวที่ซ้ำกัน

a <- c(rep("A", 3), rep("B", 3), rep("C",2))
b <- c(1,1,2,4,1,1,2,2)
df <-data.frame(a,b)

duplicated(df)
[1] FALSE  TRUE FALSE FALSE FALSE  TRUE FALSE  TRUE

> df[duplicated(df), ]
  a b
2 A 1
6 B 1
8 C 2

> df[!duplicated(df), ]
  a b
1 A 1
3 A 2
4 B 4
5 B 1
7 C 2

2
ขอบคุณที่พูดถึงฟังก์ชั่น 'ซ้ำซ้อน' มันสามารถใช้เพื่อลบแถวที่ซ้ำกันตามส่วนย่อยของคอลัมน์
Joko

51

unique()คุณกำลังมองหา

a <- c(rep("A", 3), rep("B", 3), rep("C",2))
b <- c(1,1,2,4,1,1,2,2)
df <-data.frame(a,b)
unique(df)

> unique(df)
  a b
1 A 1
3 A 2
4 B 4
5 B 1
7 C 2

1
ขอบคุณเบิร์น ฉันคิดว่าไม่ซ้ำกันสามารถใช้กับคอลัมน์ที่ระบุได้เท่านั้น ฉันไม่รู้ว่ามันสามารถใช้กับ data frame ทั้งหมดได้เช่นกัน ขอบคุณอีกครั้ง
Jana
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.