วิธีแก้ไขใน r: ฟังก์ชันรวมหายไป ค่าเริ่มต้นเป็น "ความยาว"


ข้อผิดพลาดที่คุณอาจพบเมื่อใช้ R คือ:

 Aggregation function missing: defaulting to length

ข้อผิดพลาดนี้เกิดขึ้นเมื่อคุณใช้ฟังก์ชัน dcast ในแพ็คเกจ reshape2 เพื่อแปลง data frame จาก รูปแบบยาวเป็นรูปแบบ wide แต่สามารถวางค่าหลายค่าในแต่ละเซลล์ของ data frame แบบกว้างได้

ตัวอย่างต่อไปนี้แสดงวิธีการแก้ไขข้อผิดพลาดนี้ในทางปฏิบัติ

วิธีการทำซ้ำข้อผิดพลาด

สมมติว่าเรามี data frame ใน R ต่อไปนี้ซึ่งมีข้อมูลเกี่ยวกับการขายผลิตภัณฑ์ต่างๆ:

 #create data frame
df <- data. frame (store=c('A', 'A', 'A', 'A', 'B', 'B', 'B', 'B'),
                 promotion=c('Y', 'Y', 'N', 'N', 'Y', 'Y', 'N', 'N'),
                 product=c(1, 2, 1, 2, 1, 2, 1, 2),
                 sales=c(12, 18, 29, 20, 30, 11, 15, 22))

#view data frame
df

  store promotion product sales
1 AY 1 12
2 AY 2 18
3 YEAR 1 29
4 YEAR 2 20
5 BY 1 30
6 BY 2 11
7 BN 1 15
8 BN 2 22

ตอนนี้ สมมติว่าเราพยายามใช้ฟังก์ชัน dcast เพื่อแปลง data frame จากรูปแบบยาวเป็นรูปแบบกว้าง:

 library (reshape2)

#convert data frame to wide format
df_wide <- dcast(df, store ~ product, value. var = " sales ")

#view result
df_wide

Aggregation function missing: defaulting to length
  store 1 2
1 to 2 2
2 B 2 2

โปรดทราบว่าฟังก์ชัน dcast ใช้งานได้ แต่เราได้รับข้อความแจ้งเตือน ฟังก์ชันรวมที่ขาดหายไป

วิธีการแก้ไขข้อผิดพลาด

เหตุผลที่เราได้รับข้อความเตือนก็เพราะว่าสำหรับแต่ละ ร้านค้า และ ผลิตภัณฑ์ รวมกัน มีค่าที่เป็นไปได้สองค่าที่เราสามารถใช้เพื่อ การขายได้

ตัวอย่างเช่น สำหรับร้านค้า A และผลิตภัณฑ์ 1 มูลค่าการขายอาจเป็น 12 หรือ 29

ดังนั้นฟังก์ชัน dcast จะมีค่าเริ่มต้นเป็น “ความยาว” เป็นฟังก์ชันการรวมกลุ่ม

ตัวอย่างเช่น ฐานข้อมูลขนาดใหญ่บอกเราว่าสำหรับร้านค้า A และสินค้า 1 มีมูลค่าการขายทั้งหมด 2 ค่า

หากคุณต้องการใช้ฟังก์ชันการรวมกลุ่มอื่นแทน คุณสามารถใช้ fun.aggregate

ตัวอย่างเช่น เราสามารถใช้ไวยากรณ์ต่อไปนี้เพื่อคำนวณผลรวมของยอดขายตาม ร้านค้า และ ผลิตภัณฑ์ :

 library (reshape2)

#convert data frame to wide format
df_wide <- dcast(df, store ~ product, value. var = " sales ", fun. aggregate =sum)

#view result
df_wide

  store 1 2
1 A 41 38
2 B 45 33

ต่อไปนี้เป็นวิธีตีความค่าในกรอบข้อมูลขนาดใหญ่:

  • ผลรวมของยอดขายของร้านค้า A และผลิตภัณฑ์ 1 คือ 41
  • ผลรวมของยอดขายของร้านค้า A และผลิตภัณฑ์ 2 คือ 38
  • ผลรวมของยอดขายของร้านค้า B และผลิตภัณฑ์ 1 คือ 45
  • ผลรวมของยอดขายของร้านค้า B และผลิตภัณฑ์ 2 คือ 33

โปรดทราบว่าเราไม่ได้รับข้อความเตือนใดๆ ในครั้งนี้เนื่องจากเราใช้อาร์กิวเมนต์ fun.aggregate

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

บทช่วยสอนต่อไปนี้จะอธิบายวิธีแก้ไขข้อผิดพลาดทั่วไปอื่น ๆ ใน R:

วิธีแก้ไขใน R: ค่าคงที่สตริงที่ไม่คาดคิด
วิธีแก้ไขใน R: สูตรเทมเพลตไม่ถูกต้องใน ExtractVars
วิธีแก้ไขในอาร์กิวเมนต์ R: ไม่ใช่ทั้งตัวเลขหรือตรรกะ: return na

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

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