รูปแบบข้อความธรรมดาที่ง่ายเชื่อถือได้เปิดและทำงานร่วมกันได้สำหรับการจัดเก็บข้อมูล


17

ในคำถามก่อนหน้านี้ผมถามเกี่ยวกับเครื่องมือสำหรับการแก้ไขไฟล์ CSV

Gavin เชื่อมโยงกับความคิดเห็นเกี่ยวกับวิธีใช้ R โดยDuncan Murdoch แนะนำว่ารูปแบบการแลกเปลี่ยนข้อมูลเป็นวิธีที่เชื่อถือได้มากขึ้นในการจัดเก็บข้อมูลกว่า CSV

สำหรับบางแอปพลิเคชันระบบการจัดการฐานข้อมูลเฉพาะเป็นสิ่งที่จำเป็น อย่างไรก็ตามสำหรับการวิเคราะห์ข้อมูลขนาดเล็กมีโครงการบางอย่างที่มีน้ำหนักเบากว่าดูจะเหมาะสมกว่า

พิจารณาเกณฑ์ต่อไปนี้สำหรับการประเมินรูปแบบไฟล์:

  • reliabile : ข้อมูลที่ป้อนควรเป็นจริงกับสิ่งที่ป้อน ข้อมูลควรเปิดอย่างสม่ำเสมอในซอฟต์แวร์ที่ต่างกัน
  • ง่าย : มันคงจะดีถ้ารูปแบบไฟล์นั้นเข้าใจง่ายและอ่านง่ายด้วยตัวแก้ไขข้อความอย่างง่าย ควรเขียนโปรแกรมอย่างง่ายเพื่ออ่านและเขียนรูปแบบ
  • เปิด : รูปแบบควรจะเปิด
  • ทำงานร่วมกัน : รูปแบบไฟล์ควรได้รับการสนับสนุนจากหลาย ๆ ระบบ

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

คำถาม

  • รูปแบบไฟล์ใดที่ตรงกับความต้องการเหล่านี้มากที่สุด
  • รูปแบบการแลกเปลี่ยนข้อมูลเป็นทางเลือกที่ดีกว่าหรือไม่ หรือมันมีปัญหาของตัวเอง?
  • มีรูปแบบอื่นที่เหมาะสมกว่าหรือไม่
  • ฉันประเมิน TSV และ CSV อย่างไม่เป็นธรรมหรือไม่? มีเคล็ดลับง่ายๆสำหรับการทำงานกับไฟล์ดังกล่าวที่ทำให้รูปแบบไฟล์มีความน่าเชื่อถือมากขึ้นหรือไม่?

2
ฉันควรจะเพิ่ม R ไม่มีเลยwrite.DIF()ดังนั้นมันจึงเป็นถนนสายเดียวที่ฉันกลัว
Reinstate Monica - G. Simpson

1
ฉันไม่เข้าใจปัญหาของ csv และความน่าเชื่อถือ คุณหมายถึง csv นั้นไม่เข้มงวดเพียงพอหรือไม่ Strict หมายความว่าหากข้อบังคับสำหรับ csv เข้มงวดเพียงพอเครื่องมือทุกตัวที่ทำตามคำจำกัดความเหล่านี้สามารถโหลดไฟล์ได้โดยไม่ต้องใช้พารามิเตอร์เพิ่มเติม
steffen

@steffen ฉันหมายถึงสิ่งที่ชอบ: การโหลดและบันทึกไฟล์ csv ในบางโปรแกรมเปลี่ยนไฟล์ csv; การโหลดไฟล์ csv อาจทำให้เกิดการแปลงที่ไม่เหมาะสมเว้นแต่คุณจะระมัดระวัง บางครั้งไฟล์ csv จะแตกเมื่อมีการเพิ่มชุดอักขระแปลก ๆ โดยไม่มีการหลบหนีที่เหมาะสม บางทีฉันอาจสับสนการใช้ csv กับรูปแบบตัวเองแม้ว่าฉันเคยได้ยินคนแสดงความคิดเห็นเกี่ยวกับการขาดมาตรฐานอย่างเป็นทางการ แน่นอนฉันรู้ว่าในหลาย ๆ กรณีมันใช้ได้ดี
Jeromy Anglim

5
@steffen: CSV ไม่ได้จัดเก็บข้อมูลใด ๆ เกี่ยวกับรูปแบบหรือชนิดข้อมูลของข้อมูลที่เก็บไว้ในไฟล์ คุณสามารถเปิดไฟล์ CSV ในสองแอพที่แตกต่างกันและให้มันตีความข้อมูลในไฟล์ได้สองวิธี
Reinstate Monica - G. Simpson

1
@ JeromyAnglim ฉันคิดว่าการเปลี่ยนไฟล์ csv ขึ้นอยู่กับซอฟต์แวร์ของคุณไม่ใช่รูปแบบ csv ต่อ se
Roman Luštrik

คำตอบ:


9

ฉันสงสัยว่าจะมีการชนกันของเกณฑ์หรือไม่

หนึ่งข้อร้องเรียนเกี่ยวกับรูปแบบไฟล์เช่น Excel, SQL และอื่น ๆ คือคุณต้องกำหนดประเภทข้อมูลล่วงหน้าเพื่อให้มันทำงานได้ดีซึ่งทำงานตรงข้ามกับเกณฑ์ "สิ่งที่มีน้ำหนักเบากว่า" (ฉันเข้าใจว่าข้อ จำกัด ของคุณจะมีเวลามากขึ้น เกี่ยวข้องมากกว่าการคำนวณ)

ในทางตรงกันข้ามเกณฑ์ที่ไม่ทำให้เสียข้อมูลหรืออนุญาตให้ข้อมูลถูกบดบังต้องมีการตรวจสอบข้อผิดพลาดบางอย่าง ถ้าคุณไม่ปล่อยให้ระบบหาประเภทข้อมูลโดยอัตโนมัติอย่างน่าอัศจรรย์ (ซึ่งเป็นหลักที่ Excel ล้มเหลว) ไม่มีวิธีที่จะมีเค้กของคุณและกินมันด้วย

IMO ของทั้งสองเกณฑ์ที่สองมีความสำคัญมากกว่า ความถูกต้องของข้อมูลละเมิดทันทีทำให้การวิเคราะห์ยากหรือเป็นไปไม่ได้ การสังเกตที่หายไปหรือค่าที่ไม่ถูกต้อง (หากตรวจสอบไม่ถูกต้อง) สามารถทำให้ทุกอย่างสับสน

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

IMO คุณควรให้ตัวคั่นไฟล์สั่นอย่างยุติธรรม ดังที่ได้กล่าวไว้ข้างต้นในความคิดเห็น 'data mangling' ส่วนใหญ่เป็นความผิดของชุดย่อยของเครื่องมือที่คุณใช้ โปรแกรมที่ทำงานได้ดีไม่ควรทำการรวมไฟล์ที่มีตัวคั่น แหล่งที่มาที่ใหญ่ที่สุดของ mangling คือตัวคั่นที่ระบุไว้ไม่ดี ตัวอย่างเช่นหากข้อมูลของคุณอาจมีเครื่องหมายจุลภาค CSV ไม่เหมาะสม ถ้ามันอาจมีแท็บ TSV ไม่เหมาะสม สำหรับหลาย ๆ โปรแกรม (แต่ไม่ใช่ทั้งหมด) คุณสามารถระบุตัวคั่นอื่นได้ ตัวอย่างเช่นฉันเคยใช้เครื่องหมายตัวหนอน (~) ในบางกรณีที่ยากลำบาก


ขอบคุณ ดูเหมือนว่าการใช้รูปแบบไฟล์ที่คั่นด้วยความระมัดระวังที่เหมาะสมอาจเป็นตัวเลือกที่ดีที่สุด
Jeromy Anglim

6

ในทุกกรณีฉันจะพิจารณาไฟล์ RData ที่สร้างโดย R เองตามความเหมาะสม

  • น่าเชื่อถือ (ตรวจสอบ)
  • ง่าย (เรียกว่าวาด - รูปแบบเป็นไบนารี)
  • เปิด (ตรวจสอบ: ไม่ได้รับการเปิดเกินกว่าซอร์สโค้ด R)
  • ทำงานร่วมกันได้ (ตรวจสอบ: ทำงานได้ทุกที่ R ใช้งานได้)

ใกล้พอสำหรับฉัน หากโดยระบบที่คุณหมายถึงการใช้งานมากกว่าระบบปฏิบัติการแล้วจุดสุดท้ายคือความล้มเหลว

โอ้และ RData นั้นมีประสิทธิภาพเนื่องจากตอนนี้ไฟล์ถูกบีบอัดเป็นค่าเริ่มต้น (ซึ่งเคยเป็นตัวเลือกที่ถูกปิดใช้งานตามค่าเริ่มต้น)


2
RData ใช้งานได้ดีกับ R แน่นอนว่าอาจเป็นปัญหาเกี่ยวกับการควบคุมเวอร์ชัน ฉันคิดว่าฟังก์ชั่น R dput()เป็นทางเลือกข้อความธรรมดาที่จะทำงานกับการควบคุมเวอร์ชัน อย่างไรก็ตามหนึ่งในสิ่งที่ดึงดูดความสนใจของ csv / tsv คือเมื่อฉันแชร์ที่เก็บกับข้อมูล (พูดสำหรับบทความในวารสาร) ผู้คนสามารถนำข้อมูลและวิเคราะห์ได้อย่างง่ายดายโดยใช้ซอฟต์แวร์ที่พวกเขาต้องการ
Jeromy Anglim

1
ใช่มันเป็นเรื่องที่ซับซ้อนอย่างมาก ฉันคิดว่าผู้คนได้พูดถึงเรื่องนี้ตั้งแต่รุ่งอรุณของการคำนวณ ฉันมีความคิดอีกสองข้อ (และฉันสามารถขยายคำตอบได้): ProtocolBuffers เหมาะสำหรับการแบ่งปันอย่างมีประสิทธิภาพกับ Python, Java, C ++, ... และโฮสต์ของภาษาอื่น ๆ ; Romain และฉันครอบคลุมอาร์ไซต์ใหม่ ish mldata.orgครอบคลุมสิ่งนี้เพื่อการวิจัยในการเรียนรู้ของเครื่อง - พวกเขายังมีเครื่องมือที่พวกเขาสามารถแปลงได้ นั่นอาจจะคุ้มค่ากับการดู
Dirk Eddelbuettel

1
ที่จริงแล้ว SVN ใช้ไบนาร์บลอบเช่นไฟล์ PDF และอื่น ๆ โดยไม่มีปัญหา ฉันสงสัยว่าคอมไพล์ก็ทำเช่นกัน
Dirk Eddelbuettel

นั่นเป็นเรื่องดีที่ควรรู้เกี่ยวกับไบนารี blobs มันจะเป็นการดีถ้าคุณสามารถเรียกใช้ไฟล์ข้อความต่าง ๆ และรับข้อมูลที่มีความหมายเกี่ยวกับการเปลี่ยนแปลง ขอบคุณสำหรับลิงก์ไปยัง mldata.org นั่นดูน่าสนใจ
Jeromy Anglim

ความสุข. เว็บไซต์น้องสาว mloss.org นั้นยอดเยี่ยมถ้าหวังว่าพวกเขาจะได้รับแรงฉุดสำหรับ mldata.org เวลาเหมาะสำหรับสิ่งนั้น
Dirk Eddelbuettel

4

ในการตอบสนองต่อคำตอบของเดิร์ค Eddelbuettel ผมขอแนะนำให้ใช้รูปแบบไฟล์ HDF5 มันง่ายกว่ารูปแบบ RData น้อยกว่าหรือคุณอาจพูดว่า 'รวยขึ้น' แต่ใช้งานร่วมกันได้มากกว่า (สามารถใช้ใน C, Java, Matlab และอื่น ๆ ) ฉันพบว่า I / O ที่เกี่ยวข้องกับไฟล์ HDF5 ขนาดใหญ่นั้นรวดเร็วมาก


(+1) มีความคิดเห็นเกี่ยวกับประสิทธิภาพเมื่อเปรียบเทียบกับNetCDFหรือไม่
chl

IIRC นั้นเป็นรูปแบบภายในที่เลือกไว้ที่mldata.orgด้วยชุดเครื่องมือที่แปลง ตัวแปลงอาจดูคุ้มค่า ฉันมักจะรู้สึกว่าการสนับสนุน R สำหรับ HDF5 นั้นน้อยกว่าที่สมบูรณ์แบบ
Dirk Eddelbuettel

@chl ฉันคิดว่า NetCDF ใช้ HDF5 ภายใน แต่ก็ดูเหมือนจะไม่ถูกต้องนัก
shabbychef

2

ฉันไม่แน่ใจว่าทำไมรูปแบบข้อความคงที่พร้อมด้วยข้อมูลเมตาที่เหมาะสมไม่ตรงกับเกณฑ์ของคุณ มันไม่ง่ายเลยที่จะอ่านเป็นตัวคั่น แต่คุณต้องการเมทาดาทาที่จะใช้ข้อมูลอยู่ดี งานการเขียนไวยากรณ์เพื่ออ่านโปรแกรมนั้นขึ้นอยู่กับว่าโครงสร้างของชุดข้อมูลมีขนาดใหญ่และซับซ้อนเพียงใด SPSS และ Excel มี GUI เพื่อช่วยเหลืองานเหล่านี้

มีข้อผิดพลาดเพียงสองข้อในไฟล์ CSV ที่ฉันเจอ:

  1. เขตข้อมูลที่ขาดหายไปโดยไม่มีตัวคั่น (ดังนั้นทุกเขตข้อมูลอื่นในระเบียนนั้นถูกใส่ผิดฉันมีปัญหานี้กับแท็กที่ขาดหายไปใน XML)
  2. เครื่องหมายจุลภาคภายในสตริงข้อความ

(หากคุณพบปัญหาอื่น ๆ อย่าลังเลที่จะให้ตัวอย่าง)

สองแก้ไขด้วยตัวคั่นที่ผิดปกติมากขึ้นตามที่ drnexus แนะนำ (ไปป์ (|) เป็นสิ่งที่ฉันเคยพบมาก่อน แต่ tilde (~) ทำงานเช่นเดียวกับที่ไม่น่าจะรวมอยู่ในเขตข้อมูลของสตริง) หนึ่งคือ ปัญหาไม่ได้รับการแก้ไขอย่างง่ายดายโดยซอฟต์แวร์ที่คุณใช้และทั้งสองอย่างมีปัญหากับวิธีที่ผู้คนเขียนไฟล์เพื่อเริ่มต้นไม่ใช่ซอฟต์แวร์ที่ใช้ในการอ่านไฟล์

ฉันต้องการจะบอกว่าฉันเห็นด้วยกับ drnexus ทั้งในหัวข้อนี้และการตอบสนองของเขาในหัวข้อล่าสุดของคุณเกี่ยวกับการแก้ไขไฟล์เหล่านี้ คุณดูเหมือนจะบ่นเกี่ยวกับซอฟต์แวร์ที่คุณใช้ (โดยเฉพาะอย่างยิ่ง Excel) และขอให้จัดเก็บข้อมูลในรูปแบบที่สอดคล้องกับซอฟต์แวร์ที่ประพฤติตัวไม่ดีของคุณ บางทีคำถามควรเป็นวิธีให้ Excel หยุดการจัดรูปแบบไฟล์ข้อความธรรมดาโดยอัตโนมัติ เกณฑ์ความน่าเชื่อถือของคุณตามที่ปรากฏให้ฉันเป็นปัญหาซอฟต์แวร์ที่มีการอ่านไฟล์ข้อความธรรมดา ฉันไม่ได้ใช้ R สำหรับการจัดการข้อมูล แต่ฉันไม่เคยอ่านไฟล์ที่มีตัวคั่นใน SPSS อย่างที่คุณเคยแนะนำ

หากไฟล์ต้นฉบับเขียนไม่ถูกต้องอะไรทำให้คุณคาดหวังว่าซอฟต์แวร์ใด ๆ ที่จะอ่านไฟล์ได้อย่างน่าเชื่อถือ? และรูปแบบไฟล์เฉพาะจะไม่ป้องกันไม่ให้คุณเขียนข้อมูลไปยังไฟล์ประเภทใดก็ตามที่คุณเลือกที่จะเริ่มต้นด้วย


(1) ฉันต้องการที่จะสามารถเปิดและปิดไฟล์ข้อมูลได้อย่างง่ายดายเช่นเดียวกับที่ฉันสามารถเปิดไฟล์ข้อมูล Rdata, Excel หรือ SPSS การใช้เวลาในการเดินผ่านตัวช่วยสร้างทำงานได้ แต่ไม่ใช่ขั้นตอนการทำงานที่เรียบง่ายและน่าเชื่อถือที่ฉันต้องการ (2) ใช่ฉันเห็นด้วยกับการใช้ตัวคั่นที่ผิดปกติ โดยทั่วไปแท็บนั้นเพียงพอสำหรับฉันเกือบตลอดเวลา (3) ฉันไม่มีปัญหาใหญ่กับ CSV / TSV ฉันมีปัญหาเป็นครั้งคราวที่แก้ไขได้ง่าย อย่างไรก็ตามฉันไม่ต้องคิดเกี่ยวกับปัญหาของตัวคั่นและการแปลงรูปแบบ
Jeromy Anglim

@Jeromy Anglim สำหรับ point # 1 ฉันจะเดาว่าปกติคุณจะต้องทำสิ่งนี้เพียงครั้งเดียว (เว้นแต่คุณจะย้ายระหว่างสองสภาพแวดล้อมที่แตกต่างกันบ่อยครั้งที่ไม่สามารถอ่านหรือส่งออกไฟล์อื่น ๆ ) สำหรับจุด # 3 ไฟล์ข้อความคงที่จะแก้ไขปัญหานั้นได้ ฉันไม่เคยเจอสถานการณ์ที่ SPSS จัดรูปแบบไฟล์ประเภทอื่นอย่างไม่ถูกต้อง หากคุณไม่ต้องการเผยแพร่ไฟล์ที่คำถามทั้งหมดนี้เป็นใบ้หากคุณสามารถทำให้ไฟล์บันทึกได้อย่างถูกต้องในสภาพแวดล้อมใดก็ตามที่คุณจะทำงานในสภาพแวดล้อมนั้นคุณไม่จำเป็นต้องแปลง / จัดเก็บอีกต่อไป
Andy W

1

ปัญหาทั่วไปที่มีรูปแบบข้อความล้วนคือมันไม่สามารถเก็บข้อมูลเมตาได้ คุณจะกำหนดข้อมูลที่ขาดหายไปได้อย่างไร คุณกำหนด 1 = ไม่เห็นด้วยอย่างยิ่ง, 2 = ไม่เห็นด้วย, ... ประเภทของสิ่งต่าง ๆ ในรูปแบบข้อความล้วน? ด้วยรูปแบบข้อความธรรมดาคุณจะต้องใช้เอกสารอื่นเพื่อกำหนดข้อมูลเมตาเหล่านั้น และมันไม่ง่ายที่จะทำใน XML

บางครั้งปัญหานี้อาจรบกวนมาก

โซลูชันของฉันคือใช้รูปแบบข้อมูล SPSS ซึ่งมีข้อมูลในตัวและแก้ไขได้ง่ายใน SPSS ฉันรู้ว่านี่ไม่ใช่คำตอบที่ถูกต้องสำหรับคำถามของคุณ แต่ฉันได้รับการดิ้นรนกับปัญหาเดียวกันมานานแล้วและนี่คือทางออกปัจจุบันของฉัน

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.