קריאת נתונים מקובץ טקסט

20 views
Skip to first unread message

adva asido

unread,
May 17, 2013, 9:20:33 AM5/17/13
to israel-r-...@googlegroups.com
שלום
 
אני משתמשת בפונקציה הבאה:
 
data_source<-read.table("C:\\NB_Dataset.txt")
 
ומקבלת את השגיאה הבאה
 
line 1 did not have 5 elements
 
האם יש דרך לעקוף את הבעיה? בהינתן שאין אפשרות כלל לפתוח ולתקן את הקובץ ידני.
 
 
תודה אדוה

Tal Galili

unread,
May 17, 2013, 9:29:22 AM5/17/13
to israel-r-...@googlegroups.com
תנסי:
data_source<-read.table("C:\\NB_Dataset.txt", sep = "\t")
ובאופן כללי - צריך לוודא באיזה פורמט הקובץ שמור (למקרה שמה שהצעתי לא יעבוד)





----------------Contact Details:-------------------------------------------------------
Contact me: Tal.G...@gmail.com
Read me: www.talgalili.com (Hebrew) | www.biostatistics.co.il (Hebrew) | www.r-statistics.com (English)
----------------------------------------------------------------------------------------------



2013/5/17 adva asido <adva....@gmail.com>

--
You received this message because you are subscribed to the Google Groups "Israel R User Group" group.
To unsubscribe from this group and stop receiving emails from it, send an email to israel-r-user-g...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.
 
 

amit gal

unread,
May 17, 2013, 9:55:15 AM5/17/13
to israel-r-...@googlegroups.com
איזה טקסט יש בקובץ? האם הוא מסודר כטבלה? לפי איזה חוקיות?
השגיאה שקיבלת מקורה בכך שלא בכל השורות יש אותו מספר שדות/טורים. זה יכול לקרות אם באמת הקובץ אינו מאורגן כך, או אם מסיבה כלשהי R לא מזהה נכון את המפרידים בין הטורים/שדות בכל שורה.
אם תוכלי  לצרף כמה שורות מהקובץ וקצת הקשר אפשר יהיה לתת המלצות יותר מדוייקות

עמית


2013/5/17 adva asido <adva....@gmail.com>

--

Jonathan Rosenblatt

unread,
May 17, 2013, 4:31:51 PM5/17/13
to israel-r-...@googlegroups.com
היו וברירת המחדל של read.table זה הפרדת טאבים, ההימור שלי הוא שיש לך עסק עם הפרדת פסיקים
נסי לייבא עם 
read.csv



2013/5/17 amit gal <amit...@gmail.com>



--
Jonathan Rosenblatt
www.john-ros.com

adva asido

unread,
May 18, 2013, 3:26:23 AM5/18/13
to israel-r-...@googlegroups.com
מה שאני מנסה לעשות זה לקורא קובץ טקסט בגודל 17G
הנתונים אכן מופרדים ביניהם בפסיק .
 
ביצעתי את מה שטל רשם (תודה טל (:  )  השגיאה הפסיקה ואז זה נראה שהתוכנה התחילה לקרוא את הנתונים
התהליך נמשך יותר משעה עד שהפסקתי את הפעולה (המחשב פשוט נתקע).
 
האם R מסוגל לעבד כמות כזאת של מידע?
אין לי צורך שיציג את הנתונים אבל אני כן צריכה שיבצע עליהם פעולות כגון: דירוג, ממוצע cov  ועוד..
 
תודה


2013/5/17 Jonathan Rosenblatt <john...@gmail.com>

Tal Galili

unread,
May 18, 2013, 3:45:23 AM5/18/13
to israel-r-...@googlegroups.com
שלום אדווה,

ראשית, אם מה שהצעתי עבד, זה אומר שהנתונים מופרדים בטאבים ולא בפסיקים (פשוט יותר פעמים נתקלתי בסיפור הזה עם טאבים, לכן הצעתי את שהצעתי).
רק כדי לוודא שאת אכן מצליחה לקרוא את הנתונים נכון, הייתי מציע להתחיל בלהריץ:
data_source<-read.table("C:\\NB_Dataset.txt", sep = "\t", nrows = 10)
ולראות שמה שקיבלת הוא הגיוני (אם לא, אז צריך לעבור לבא בתור).

עם זאת, באופן עקרוני יותר, R יודע לעבוד עם אובייקטים ששמורים בזכרון. כלומר, אם יש לך זיכרון של יותר מ- 17GB על המחשב (ומערכת הפעלה חדשה מספיק, אני מניח שאת על חלונות 7), ו- R חדש מספיק (דהיינו 3.0.0), אז יש אולי סיכוי שהוא יצליח לקרוא את הנתונים הללו לתוך R (אני האמת קצת מסופק, אבל אולי, מעולם לא ניסיתי).
עם זאת, תהליך העבודה הזה נשמע לי ממש לא ריאלי (לקרוא כל פעם את הנתונים לתוך הזכרון, גם אילו זה היה אפשרי - ואני מסופק שזה אפשרי).

מה שיותר הגיוני לעשות הוא לעבוד עם חבילה כמו ff, עם פונקציה כמו read.csv.ffdf
ולעבוד עם הפונקציות שהחבילה הזו מעניקה.
קישור להתחיל לקרוא ממנו (אשר נותן הרבה קישורים אחרים) הוא זה:

כמובן שגם אפשר להעביר את הנתונים הללו לדטא-בייס, ומשם לקרוא לחתיכות מהנתונים באמצעות הדטאבייס, או חבילות שמחברות אותו ל- R.

אשמח לשמוע איזה דברים עבדו עבורך (היות ועד כה לא עבדתי עם נתונים בכאלה גדלים)

בברכה,
טל





----------------Contact Details:-------------------------------------------------------
Contact me: Tal.G...@gmail.com
Read me: www.talgalili.com (Hebrew) | www.biostatistics.co.il (Hebrew) | www.r-statistics.com (English)
----------------------------------------------------------------------------------------------



2013/5/18 adva asido <adva....@gmail.com>

Jonathan Rosenblatt

unread,
May 18, 2013, 10:47:36 AM5/18/13
to israel-r-...@googlegroups.com
כלל האצבע הוא פי 4-5. כלומר בשביל לקרוא 17GB כדאי שיהיה לך 68GB זיכרון RAM.
הואיל וזה כנראה אינו המקרה, הפתרונות שלך הם:
(1) לייבא חכם.
(2) להשתמש בכלים מיוחדים ב- R.
(3) לא להשתמש ב- R?

על (3) לא ארחיב, אבל אזכיר ש- SPSS  ו- SAS לא ממש טוענים את כל הנתונים לזיכרון כך שהם לא יתרגשו מכמות הנתונים.

לגבי (2)- טל נתן לך כיוון.

לגבי (1):
נראה כי הפעולות שאת מעוניינת לעשות הן די פשוטות. אם אניח שיש לך מעט משתנים והרבה נתונים, הרי שאת יכולה לדגום מתוך הנתונים שלך. הממוצע של מיליארד תצפיות או הממוצע של אלף (שנדגמו מקרית) לא יהיה שונה. 
כמובן שלדגום בתוך הנתונים בלי לייבא את הקובץ דורש טיפה של מיומנות. בפרט- תצטרכי להשתמש בפונקציות file ו- readline במקום read.table.
אם לחלופין יש הרבה משתנים ומעט תצפיות, תוכלי לייבא כל פעם רק חלק קטן מהקובץ, לבצע את הפעולה שרצית, ואז להמשיך לשאר הקובץ. גם כאן, כלי העבודה יהיו file, readline ואולי גם scan.



2013/5/18 Tal Galili <tal.g...@gmail.com>



--
Jonathan Rosenblatt
www.john-ros.com

Reply all
Reply to author
Forward
0 new messages