วิธีแก้ไขในข้อผิดพลาด r: ตัวระบุซ้ำสำหรับแถว
ข้อผิดพลาดที่คุณอาจพบใน R คือ:
Error: Duplicate identifiers for rows
ข้อผิดพลาดนี้เกิดขึ้นเมื่อคุณพยายามใช้ฟังก์ชัน Spread() เพื่อกระจายค่าของคอลัมน์ตั้งแต่หนึ่งคอลัมน์ขึ้นไปใน Data Frame ไปยังคอลัมน์ของตัวเอง
อย่างไรก็ตาม ข้อผิดพลาดอาจเกิดขึ้นได้หากไม่มี ID เฉพาะสำหรับแต่ละแถว ดังนั้นจึงไม่มีวิธีใดในการพิจารณาว่าค่าใดเป็นของข้อสังเกตใดเมื่อเรียกใช้การกระจาย
ตัวอย่างต่อไปนี้แสดงวิธีการแก้ไขข้อผิดพลาดนี้ในทางปฏิบัติ
ตัวอย่าง: วิธีการแก้ไขข้อผิดพลาด
สมมติว่าเรามีกรอบข้อมูลต่อไปนี้ใน R ซึ่งมีข้อมูลเกี่ยวกับผู้เล่นบาสเกตบอลต่างๆ:
#create data frame df <- data. frame (player=rep(c(' A ', ' B '), each= 4 ), year=rep(1:4, times= 2 ), assists=c(4, 10, 4, 4, 3, 7, 7, 6), dots=c(14, 6, 18, 7, 22, 9, 38, 4)) #view data frame df player year assists points 1 A 1 4 14 2 A 2 10 6 3 To 3 4 18 4 To 4 4 7 5 B 1 3 22 6 B 2 7 9 7 B 3 7 38 8 B 4 6 4
ตอนนี้สมมติว่าเราต้องการแปลงกรอบข้อมูลให้มีคอลัมน์ ปี เป็นคอลัมน์ id และสร้างคอลัมน์ใหม่ที่เรียกว่า Assists_A , Assists_B , point_A และ point_B เพื่อแสดงค่า Assists และคะแนนของผู้เล่น A และ B ในระหว่างหลักสูตรของแต่ละปี .
เนื่องจากค่าในคอลัมน์ปีจะไม่ซ้ำกัน (จะมี 1 สองตัว, 2 สองตัว ฯลฯ ) ฟังก์ชัน Spread() จะทำให้เกิดข้อผิดพลาด
อย่างไรก็ตาม เราสามารถใช้ฟังก์ชัน pivot_wider() กับไวยากรณ์ต่อไปนี้เพื่อสร้างกรอบข้อมูลที่ต้องการ:
library (tidyr)
#spread the values in the points and assists columns
pivot_wider(data = df,
id_cols = year,
names_from = player,
values_from = c(' assists ', ' points '))
# A tibble: 4 x 5
year assists_A assists_B points_A points_B
1 1 4 3 14 22
2 2 10 7 6 9
3 3 4 7 18 38
4 4 4 6 7 4
โปรดทราบว่าเราไม่ได้รับข้อผิดพลาดใด ๆ และสามารถสร้างคอลัมน์ใหม่ที่แสดงค่าแต้มและช่วยเหลือสำหรับผู้เล่น A และ B ในแต่ละสี่ปีได้สำเร็จ
แหล่งข้อมูลเพิ่มเติม
บทช่วยสอนต่อไปนี้จะอธิบายวิธีแก้ไขข้อผิดพลาดทั่วไปอื่น ๆ ใน R:
วิธีแก้ไขใน R: NAs ที่ถูกบังคับโดยการบังคับ
วิธีซ่อมแซมใน R: ดัชนีอยู่นอกขอบเขต
วิธีแก้ไขใน R: ความยาวของวัตถุที่ยาวกว่าไม่ใช่ผลคูณของความยาวของวัตถุที่สั้นกว่า
วิธีการซ่อมแซมใน R: จำนวนองค์ประกอบที่จะเปลี่ยนไม่ใช่ผลคูณของความยาวในการเปลี่ยน