כיצד להמיר גורם ב- R.

מאת אנדרי דה פריס, ג'וריס מייס

לפעמים אתה צריך להמיר במפורש גורמים לטקסט או למספרים. לשם כך אתה משתמש בפונקציותas.character ()אוֹas.numeric (). ראשית, המירו אתהוראותוקטור לגורם הנקראהוראות. גורם(כפי שראית קודם):



> directions directions.factor directions.factor [1] North East South South Levels: East North South

להשתמשas.character ()להמיר גורם לווקטור תווים:



> as.character(directions.factor) [1] 'North' 'East' 'South' 'South'

להשתמשas.numeric ()להמיר גורם לווקטור מספרי. שים לב שהדבר יחזיר את הקודים המספריים המתאימים לרמות הגורמים. לדוגמה,מזרחמתאים ל1,צָפוֹןמתאים לשתיים, וכן הלאה:

> as.numeric(directions.factor) [1] 2 1 3 3

היזהר מאוד כאשר אתה ממיר גורמים בעלי רמות מספריות לווקטור מספרי. התוצאות לא יכולות להיות מה שאתה מצפה.



לדוגמא, דמיין שיש לך וקטור המציין כמה תוצאות ציון הבדיקה עם הערכיםג (9, 8, 10, 8, 9), שאתה ממיר לגורם:

> numbers <- factor(c(9, 8, 10, 8, 9))

להסתכל על הייצוג הפנימי שלמספרים, להשתמשstr ():

> str(numbers) Factor w/ 3 levels '8','9','10': 2 1 3 1 2

זה מציין ש- R שומר את הערכים כ-ג (2, 1, 3, 1, 2)עם רמות קשורות שלג (8, 9, 10).



image0.jpg

אם אתה רוצה להמירמספריםלווקטור תווים, התוצאות כמעט כמו שהיית מצפה:

> as.character(numbers) [1] '9' '8' '10' '8' '9'

עם זאת, אם אתה פשוט משתמשכפי ש. מספרי (), התוצאה שלך היא וקטור של ייצוגים ברמה הפנימית של הגורם שלך ולא הערכים המקוריים:

> as.numeric(numbers) [1] 2 1 3 1 2

עזרת ה- R ב?גורםמתאר פיתרון לבעיה זו. הפתרון הוא להוסיף את הרמות לפי הגורם עצמו ואז להמיר למספרי:

> as.numeric(as.character(numbers)) [1] 9 8 10 8 9

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

  • הפונקציה הפנימית,כמו.דמות (מספרים), מכיל את הטקסטג (8, 9, 10).

  • הפונקציה החיצונית,כמו.מספרי (...), עושה את ההמרה הסופית ל-ג (9, 8, 10, 8, 9).