วิธีแก้ไขใน 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