כיצד להעביר את ה-DataFrame ב-R

Kyzd Lh Byr T H Dataframe B R



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

דוגמה 1: המרת ה-DataFrame באמצעות הפונקציה T() ב-R

הפונקציה t() היא פונקציה מובנית של R המשמשת להמרת DataFrame. עם זאת, הוא ממיר את ה-DataFrame למטריצה, כך שכל עמודה שאינה מספרית הופכת למחרוזות תווים. שקול את הסקריפט R הבא כדי להעביר את ה-DataFrame:







MyData = data.frame(c1 = c(1, 2, 3, 4, 5),

c2 = c(6, 7, 8, 9, 10),
c3 = c(11, 12, 13, 14, 15))

row.names(MyData) = c('r1','r2','r3','r4','r5')

t(MyData)

כאן, אנו מכריזים על וקטור MyData ומקצים לו את ה-data.frame() . אנו מכניסים את הנתונים לדוגמה המכילים שלוש עמודות עם הערכים בתוך הפונקציה data.frame(). לאחר מכן, אנו משתמשים בפונקציה 'row.names()' ומגדירים את שמות השורות עבור הערכים של DataFrame 'MyData'. לבסוף, אנו מעבירים את DataFrame 'MyData' באמצעות הפונקציה t() .



הפלט הבא מציג את הטרנספוזיציה של ה-DataFrame כאשר שמות השורות של ה-DataFrame המקורי הופכים לשמות העמודות של ה-DataFrame שעבר טרנספוזיציה, ושמות העמודות של ה-DataFrame המקורי הולכים לאיבוד בהעברה:







דוגמה 2: המרת ה-DataFrame באמצעות הפונקציה Transpose() ב-R

ניתן להשתמש בפונקציה transpose() מחבילת 'data.table' גם כדי להעביר DataFrame והיא מחזירה DataFrame. לכן, עלינו לוודא שה-'data.table' מותקן ב-R. אם הוא לא נמצא אז, נוכל להתקין אותו עם הפקודה הבאה:

install.packages('data.table')

כעת, אנו יכולים לייבא בקלות את החבילה 'data.table' כדי לגשת לפונקציה transpose() ב-R כדי להמיר את ה-DataFrame. שקול את קוד R הבא שבו נקראת הפונקציה transpose() כדי להמיר את ה-DataFrame:



df <- data.frame(A = c(1:5),

B = c(6:10),
C = c(11:15))


row.names(df) <- c('r1', 'r2', 'r3', 'r4', 'r5')

df

כאן, אנו יוצרים את 'df' DataFrame עם שלוש עמודות וחמש שורות כאשר כל עמודה מכילה רצף של מספרים מ-1 עד 5, 6 עד 10 ו-11 עד 15, בהתאמה. בנוסף, אנו מקצים את שמות השורות של DataFrame באמצעות הפונקציה row.names() . לאחר מכן, אנו מדפיסים את ה-DataFrame המקורי לקונסולה.

ה-DataFrame המקורי מוצג על המסך כאן:

לאחר מכן, אנו מעבירים את ה-DataFrame 'df' המקורי על ידי החלפת השורות והעמודות של ה-DataFrame.

library(data.table)

df_trans <- transpose(df)

rownames(df_trans) <- colnames(df)

colnames(df_trans) <- rownames(df)

df_trans

לשם כך, אנו טוענים תחילה את ספריית 'data.table' המספקת את הכלים לעבודה עם הנתונים הטבלאיים ב-R. לאחר מכן, נעשה שימוש בפונקציה transpose() מספריית 'data.table'. ה-DataFrame המועבר שנוצר מוקצה למשתנה חדש שהוא 'df_t'. לאחר מכן, אנו מקצים את שמות העמודות של ה-DataFrame המקורי 'df' כשמות שורות ל-DataFrame 'df_trans' המועבר באמצעות הפונקציה rownames() . לאחר מכן, שמות השורות של ה-DataFrame המקורי 'df' מוקצים כשמות עמודות ל-DataFrame 'df_trans' המוטרפים באמצעות הפונקציה colnames() .

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

דוגמה 3: המרת ה-DataFrame באמצעות הפונקציה Tidyr Library Gather() ב-R

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

install.packages('tidyr')

בואו ניקח בחשבון את קוד R הבא. אנו משתמשים בפונקציית gather() של חבילה זו כדי להעביר את ה-DataFrame הרחב יותר:

ספרייה (tidyr)

n = 10

tidy_df = data.frame(

ID = c(1:n),
Exam1_Marks = c(73, 219, 86, 192, 99,
188, 72, 35, 91, 165),
Exam2_Marks = c(217, 89, 66, 334, 99,
101, 108, 233, 45, 300),
Exam3_Marks = c(39, 101, 209, 289, 176,
120, 89, 119, 199, 96))

tidy_df

כאן, DataFrame 'רחבה' מומר ל-DataFrame 'ארוך' באמצעות tidyr. ראשית, אנו יוצרים DataFrame 'tidy_df' עם שלוש עמודות. לכל אחת מהעמודות הללו יש 10 ערכים.

DataFrame הארוך מוצג במסך הפלט הבא:

לאחר מכן, אנו מעבירים את DataFrame 'tidy_df' לפונקציה gather() עם אופרטור הצינור '%>%'. הפונקציה gather() מ-tidyr משמשת להפיכת 'tidy_df' ל-DataFrame ארוך. הפונקציה gather() לוקחת קלט עם השם 'בחינות' המציין עמודה חדשה שתכיל את שמות המשתנים שנוצרו בטרנספורמציה. 'סימונים' מציינת את העמודה המאגדת את 'ציונים_בחינה1' ו'ציונים_בחינה2'.

ארוך <- tidy_df %>%

לאסוף (בחינות, ציונים,
Exam1_Marks:Exam2_Marks)


ארוך

הפלט מציג את ה-DataFrame הארוך לקונסולה שכעת יש לה פורמט 'ארוך' עם שלוש עמודות:

דוגמה 4: המרת ה-DataFrame באמצעות הפונקציה Pivot_Wider() ב-R

הפונקציה המתקדמת הבאה שבה אנו משתמשים כדי להמיר את ה-DataFrame היא הפונקציה pivot_wider() . ה-pivot_wider() הוא פונקציה מחבילת tidyr ב-R המאפשרת לנו להפוך DataFrame 'ארוך' ל-DataFrame 'רחבה'. הפונקציה לוקחת שלושה ארגומנטים עיקריים הנידונים בקוד הבא של R:

ספרייה (tidyr)

df <- data.frame(

id = c(1, 2, 3, 1, 2, 3),
var = c('v1', 'v1', 'v1', 'v2', 'v2', 'v2'),
val = c(4, 5, 6, 7, 8, 9)


)

df

כאן, אנו טוענים תחילה את חבילת tidyr באמצעות הפונקציה library() . לאחר מכן, אנו מגדירים את ה-DataFrame לדוגמה ב- 'df'. ל-'df' DataFrame יש שלוש עמודות המכילות ערכים שונים, בהתאם. ניתן לראות את ה-DataFrame לדוגמה בפלט הבא:

לאחר מכן, הפונקציה pivot_wider() מ-tidyr משמשת להפיכת 'df' ל-'df_wide'.

df_wide <- pivot_wider(df, names_from = var, values_from = val)

df_wide

הפונקציה pivot_wider() לוקחת כאן שלושה ארגומנטים. ראשית, צריך לשנות את ה-'df' DataFrame. לאחר מכן, הארגומנט names_from מגדיר את שם העמודה לשימוש עבור שמות המשתנים החדשים. לבסוף, הארגומנט values_from מציין את שם העמודה שישמש עבור הערכים החדשים.

הפלט הבא מייצג את ההעברה של ה-DataFrame הארוך ל-DataFrame הרחב:

סיכום

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