ปัญหาการแปลงจากปัจจัยเป็นตัวแปรตัวเลขใน R [ปิด]


11

ฉันต้องการแปลงตัวแปรปัจจัยเป็นตัวเลข แต่as.numericไม่มีผลกระทบที่ฉันคาดหวัง

ด้านล่างฉันได้รับสถิติสรุปสำหรับรุ่นตัวเลขของตัวแปรตามตัวแปรดั้งเดิม หมายถึงการนับต่อ 1 ... บางที (เขาคาดเดา) ระดับของปัจจัยที่มีทั้งชื่อและหมายเลขและฉันคาดหวังว่าค่าของตัวแปรใหม่จะมาจากชื่อเมื่อas.numericถูกออกแบบมาเพื่อใช้หมายเลข?

> describe.by(as.numeric(df$sch), df$sch)

group: 
  var    n mean sd median trimmed mad min max range skew kurtosis se
1   1 5389    1  0      1       1   0   1   1     0  NaN      NaN  0
--------------------------------------------------------- 
group: 001
  var  n mean sd median trimmed mad min max range skew kurtosis se
1   1 19    2  0      2       2   0   2   2     0  NaN      NaN  0
--------------------------------------------------------- 
group: 002
  var  n mean sd median trimmed mad min max range skew kurtosis se
1   1 54    3  0      3       3   0   3   3     0  NaN      NaN  0
--------------------------------------------------------- 

1
ฉันลบแท็กใหม่ที่คุณเพิ่ม พวกเขาดูเหมือนว่าฉันจะกว้างเกินไปและไม่เลือกปฏิบัติหรือในกรณีของตัวกรองแคบเกินไป (เนื่องจากเป็นฟังก์ชันในฐาน R) โปรดลองใหม่ถ้าคุณคิดว่ามีอะไรหายไป
JMS

คำตอบ:


28

ถูกต้อง: as.numeric(factor)ส่งคืนหมายเลขที่ R กำหนดให้กับระดับของปัจจัยนั้น คุณสามารถลองas.numeric(as.character(factor))


4
ตามคำตอบนี้แนะนำให้ใช้stackoverflow.com/a/3418192/476907 as.numeric(levels(f))[f]และมีประสิทธิภาพมากกว่าเล็กน้อยas.numeric(as.character(f))
ลูกโซ่

ขอบคุณ! คำตอบนี้ช่วยฉันได้มาก :)
Yasha

13

นี่คือคำถามที่พบบ่อย 7.10ใน R คำถามที่พบบ่อย ใช่ปัจจัยจะถูกเก็บไว้เป็นจำนวนเต็มตั้งแต่ 1 ถึงจำนวนของระดับและ as.numeric ให้รหัสพื้นฐาน คำถามที่พบบ่อยให้ 2 วิธีในการแปลงเป็นตัวเลข

อย่างไรก็ตามนี่เป็นเพราะเมื่อคุณอ่านข้อมูลในนั้นมีบางอย่างเกี่ยวกับข้อมูลของคุณที่ทำให้ R ถือว่าเป็นปัจจัยแทนที่จะเป็นตัวเลข (มักจะเป็นอักขระที่ไม่ใช่ตัวเลขหลงทาง) มันมักจะดีกว่าที่จะแก้ไขข้อมูลดิบ (การแปลงจะแปลงชิ้นส่วนที่ไม่ใช่ตัวเลขเป็น NA) หรือใช้อาร์กิวเมนต์ colClasses ถ้าใช้ read.table หรือคล้ายกัน


1
values.tmp <- sapply (เป็นไปได้ค่า, as.numeric); values.nonnumeric <- values.tmp [is.na (values.tmp)]
russellpierce
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.