เป็นไปได้ไหมที่จะอ่านคอลัมน์ CSV โดยตรงเป็นข้อมูลหมวดหมู่?


10

ฉันจำเป็นต้องวิเคราะห์ด้วย R ข้อมูลจากการสำรวจทางการแพทย์ (พร้อมคอลัมน์มากกว่า 100 คอลัมน์) ที่มาในรูปแบบ CSV ฉันจะใช้เสียงอึกทึกสำหรับการวิเคราะห์เริ่มต้น แต่เบื้องหลังมันยังคงเป็นอาร์

ถ้าฉันread.csv ()ไฟล์คอลัมน์ที่มีรหัสตัวเลขจะถือว่าเป็นข้อมูลตัวเลข ฉันรู้ว่าฉันสามารถสร้างคอลัมน์เด็ดขาดจากพวกเขาด้วยfactor ()แต่การทำเพื่อ 100+ คอลัมน์เป็นความเจ็บปวด

ฉันหวังว่าจะมีวิธีที่ดีกว่าในการบอกให้ R นำเข้าคอลัมน์เป็นปัจจัยโดยตรง หรืออย่างน้อยก็แปลงพวกมันให้เข้าที่หลังจากนั้น

ขอบคุณ!


3
เรายินดีที่จะรับคำถาม R ที่นี่ ดูmeta.stats.stackexchange.com/questions/252/…
Rob Hyndman

คำตอบ:


15

คุณสามารถใช้colClassesอาร์กิวเมนต์เพื่อระบุคลาสของคอลัมน์ข้อมูลของคุณ ตัวอย่างเช่น:

data <- read.csv('foo.csv', colClasses=c('numeric', 'factor', 'factor'))

จะกำหนดตัวเลขให้กับคอลัมน์แรกตัวคูณกับตัวที่สองและสาม เนื่องจากคุณมีคอลัมน์จำนวนมากจึงอาจเป็นทางลัด:

data <- read.csv('foo.csv', colClasses=c('numeric', rep('factor', 37), 'character'))

หรือรูปแบบดังกล่าวบางอย่าง (เช่นกำหนดตัวเลขให้กับคอลัมน์แรกปัจจัยไปยังคอลัมน์ 37 ถัดไปจากนั้นตัวอักษรไปยังหนึ่งคอลัมน์สุดท้าย)


สิ่งนี้อาจมีประโยชน์หากคุณต้องการระบุคลาสด้วยชื่อตัวแปร (เช่นสำหรับการกำหนดคลาสให้กับตัวแปรเดียวเท่านั้น): stackoverflow.com/a/8185739/1169233
Waldir Leoncio

3

หรือเพียงแค่ทำมันหลังจากที่คุณอ่านข้อมูล

dat <- read.csv("kdfjdkf")
apply(dat, 2, factor)

แต่ประเภทของ Q นี้อยู่พอดีอาจจะมากขึ้นสำหรับกองมากเกิน

แก้ไข : ดูด้านล่าง


1
ดูmeta.stats.stackexchange.com/questions/252/…ฉันทามติในปัจจุบันคือว่านี่เป็นคำถามที่เหมาะสมหากคุณไม่เห็นด้วยกับการตีระฆังที่เมตาอย่าทรมานผู้ถามคำถามใหม่
russellpierce

1
ตกลง แต่คุณอาจมีผู้ชมจำนวนมากขึ้นเพื่อรับการตอบสนองสำหรับคำถาม R บริสุทธิ์ (อย่างน้อยก็ตอนนี้) ดังนั้น "อาจ" "ความทรมาน" เป็นคำที่แข็งแกร่งใช่มั้ย :)
apeescape

1
แน่นอนว่าความทรมานนั้นค่อนข้างรุนแรง ฉันขอโทษเกี่ยวกับเรื่องนั้น ฉัน / ฉันเพิ่งผิดหวังกับผู้ใช้ที่กระทำผิดซ้ำ ๆ (ซึ่งคุณไม่ใช่คนเดียว) ที่ยังคงมีอยู่ในการเปลี่ยนเส้นทางผู้ถามคำถามไปยัง StackOverflow โดยไม่ต้องแสดงความคิดเห็นใด ๆ กับเมตาดาต้า
russellpierce

สิ่งนี้สามารถนำไปสู่ปัญหาที่คุณมีคอลัมน์ที่มีตัวเลข 0 เบาะ, การผสมของตัวเลขและค่าที่หายไปหรือมีเพียงค่าของ'T'และ'F'(ถูกแปลงเป็นตรรกะ)
Max Candocia
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.