วิธีลบบรรทัดที่ซ้ำกันใน r เพื่อไม่ให้เหลือ


คุณสามารถใช้วิธีการต่อไปนี้ใน R เพื่อลบแถวที่ซ้ำกันออกจาก data frame เพื่อ ไม่ให้ เหลืออยู่ใน data frame ที่เป็นผลลัพธ์:

วิธีที่ 1: ใช้ Base R

 new_df <- df[ ! (duplicated(df) | duplicated(df, fromLast= TRUE )), ]

วิธีที่ 2: ใช้ dplyr

 library (dplyr)

new_df <- df %>%
          group_by(across(everything())) %>%
          filter(n() == 1 )

ตัวอย่างต่อไปนี้แสดงวิธีการใช้แต่ละวิธีในทางปฏิบัติกับกรอบข้อมูลต่อไปนี้:

 #create data frame
df <- data. frame (team=c('A', 'A', 'A', 'A', 'B', 'B', 'B', 'B'),
                 points=c(20, 20, 28, 14, 13, 18, 27, 13))

#view data frame
df

  team points
1 to 20
2 to 20
3 to 28
4 to 14
5 B 13
6 B 18
7 B 27
8 B 13

ตัวอย่างที่ 1: ใช้ Base R

รหัสต่อไปนี้แสดงวิธีการใช้ฟังก์ชันฐาน R เพื่อลบแถวที่ซ้ำกันออกจากกรอบข้อมูลเพื่อไม่ให้เหลือ:

 #create new data frame that removes duplicates so none are left
new_df <- df[ ! (duplicated(df) | duplicated(df, fromLast= TRUE )), ]

#view new data frame
new_df

  team points
3 to 28
4 to 14
6 B 18
7 B 27

โปรดทราบว่าแถวที่ซ้ำกันแต่ละแถวได้ถูกลบออกจาก data frame และไม่มีแถวที่ซ้ำกันเหลืออยู่

ตัวอย่างที่ 2: การใช้ dplyr

รหัสต่อไปนี้แสดงวิธีใช้ฟังก์ชันในแพ็คเกจ dplyr ใน R เพื่อลบแถวที่ซ้ำกันออกจาก data frame เพื่อไม่ให้เหลือเลย:

 library (dplyr)

#create new data frame that removes duplicates so none are left
new_df <- df %>%
          group_by(across(everything())) %>%
          filter(n() == 1 )

#view new data frame
new_df

# A tibble: 4 x 2
# Groups: team, points [4]
  team points
    
1 to 28
2 to 14
3 B 18
4 B 27

โปรดทราบว่าแถวที่ซ้ำกันแต่ละแถวได้ถูกลบออกจาก data frame และไม่มีแถวที่ซ้ำกันเหลืออยู่

โปรดทราบว่าวิธีนี้ให้ผลลัพธ์เหมือนกับวิธีก่อนหน้า

หมายเหตุ : สำหรับเฟรมข้อมูลที่มีขนาดใหญ่มาก วิธี dplyr จะเร็วกว่าวิธี base R

แหล่งข้อมูลเพิ่มเติม

บทช่วยสอนต่อไปนี้จะอธิบายวิธีการใช้งานฟังก์ชันทั่วไปอื่นๆ ใน R:

วิธีลบแถวใน R ตามเงื่อนไข
วิธีลบแถวที่มี NA ในคอลัมน์เฉพาะใน R

เพิ่มความคิดเห็น

อีเมลของคุณจะไม่แสดงให้คนอื่นเห็น ช่องข้อมูลจำเป็นถูกทำเครื่องหมาย *