در این آموزش نحوه کار با Dataframe در R را خواهید آموخت:
- مدرس: افشین متولی
- سایت: آر استودیو
- سطح آموزش: مبتدی
دیتافرم یک ساختار دو-بُعدی در نرم افزار R است. در واقعیت یک دیتافرم حالت خاصی از لیست می باشد که همه مولفه های آن دارای طول برابری هستند.
در دیتافرم هر مولفه تشکیل یک ستون را می دهد و محتوای مربوط به این مولفه در سطرها قرار می گیرند.
نحوه ساختن Dataframe در R:
قبل از یادگیری کار با Dataframe در R ابتدا شما می توانید با استفاده از دستور data.frame() یک دیتافرم ایجاد کنید. مثال زیر را نگاه کنید:
1 2 3 4 5 6 |
x <- data.frame("SN" = 1:2, "Age" = c(21,15), "Name" = c("John","Dora")) str(x) # x ساختار 'data.frame': 2 obs. of 3 variables: $ SN : int 1 2 $ Age : num 21 15 $ Name: Factor w/ 2 levels "Dora","John": 2 1 |
بررسی دیتافرم بودن یا نبود یک شیء
برای این کار از دستور class به شکل زیر استفاده کنید:
1 2 3 4 5 6 7 8 |
x SN Age Name 1 1 21 John 2 2 15 Dora typeof(x) # توجه کنید که دیتافرم هم حالت خاصی از لیست است [1] "list" class(x) [1] "data.frame" |
توابع مربوط به Dataframe
1 2 3 4 5 6 7 8 |
names(x) # تابعی برای مشخص کردن نام های دیتافرم [1] "SN" "Age" "Name" ncol(x) # تابعی برای مشخص کردن تعدا ستون های دیتافرم [1] 3 nrow(x) # تابعی برای تعداد سطرهای دیتافرم [1] 2 length(x) # ncol() طول لیست را نشان می دهد همانند [1] 3 |
توجه: در بالا مشاهده کردید که ستون سوم دیتافرم یعنی Name به جای این که یک بردار کاراکتری باشد، یک فاکتور (factor) بود.
دستور data.frame به صورت پیش فرض بردار کاراکتری را تبدیل به فاکتور می کند. برای جلوگیری از این اشتباه از دستور stringsAsFactors=FALSE استفاده کنید. یعنی:
1 2 3 4 5 6 |
x <- data.frame("SN" = 1:2, "Age" = c(21,15), "Name" = c("John", "Dora"), stringsAsFactors = FALSE) str(x) # حال دیگر ستون سوم شما یک بردار کاراکتری است 'data.frame': 2 obs. of 3 variables: $ SN : int 1 2 $ Age : num 21 15 $ Name: chr "John" "Dora" |
بسیاری از دستورهای فراخوانی داده ها در R، داده ها را تبدیل به یک data frame می کنند.
دسترسی به مولفه های یک Dataframe در R
مشابه کاری که در لیست یا ماتریس انجام داده شد، در این جا همان کار را انجام می دهیم.
1- دسترسی به عنوان یک لیست:
برای این کار از یک براکت، دو براکت یا $ جهت دسترسی به ستون های دیتافرم استفاده کنید:
1 2 3 4 5 6 7 8 9 10 |
x["Name"] Name 1 John 2 Dora x$Name [1] "John" "Dora" x[["Name"]] [1] "John" "Dora" x[[3]] [1] "John" "Dora" |
2- دسترسی به عنوان یک ماتریس:
در این جا به عنوان یک مثال از داده های trees استفاده کرده ایم:
1 2 3 4 5 6 7 8 9 10 |
str(trees) 'data.frame': 31 obs. of 3 variables: $ Girth : num 8.3 8.6 8.8 10.5 10.7 10.8 11 11 11.1 11.2 ... $ Height: num 70 65 63 72 81 83 66 75 80 75 ... $ Volume: num 10.3 10.3 10.2 16.4 18.8 19.7 15.6 18.2 22.6 19.9 ... head(trees,n=3) Girth Height Volume 1 8.3 70 10.3 2 8.6 65 10.3 3 8.8 63 10.2 |
همانطور که می بینیم trees یک دیتافرم با 31 سطر و 3 ستون است. ما همچنین سه سطر اول دیتافرم را نیز نمایش داده ایم. حال برای دسترسی به مولفه های یک دیتافرم همانند ماتریس داریم:
1 2 3 4 5 6 7 8 9 10 11 12 |
trees[2:3,] # سطر دوم و سوم را انتخاب می کند Girth Height Volume 2 8.6 65 10.3 3 8.8 63 10.2 trees[trees$Height > 82,] # سطرهایی را که ارتفاع بیشتر از 82 دارند انتخاب می کند Girth Height Volume 6 10.8 83 19.7 17 12.9 85 33.8 18 13.3 86 27.4 31 20.6 87 77.0 trees[10:12,2] # سطرهای 10 تا 12 و ستون 2 را انتخاب می کند [1] 75 79 76 |
در آخرین خط کدهای بالا می بینیم که خروجی یک بردار است در صورتی که باید یک دیتافرم (ماتریس) باشد. برای برطرف کردن این مشکل از دستور drop=FALSE استفاده کنید. به عنوان مثال:
1 2 3 4 5 |
trees[10:12,2, drop = FALSE] Height 10 75 11 79 12 76 |
نحوه ویرایش کردن یک Dataframe در R
1 2 3 4 5 6 7 8 9 |
x SN Age Name 1 1 21 John 2 2 15 Dora x[1,"Age"] <- 20 # تغییر یکی از مقادیر دیتافرم x SN Age Name 1 1 20 John 2 2 15 Dora |
اضافه کردن مولفه ها به Dataframe
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
rbind(x,list(1,16,"Paul")) # اضافه کردن مولفه به دیتافرم به صورت سطری SN Age Name 1 1 20 John 2 2 15 Dora 3 1 16 Pau # r-studio.ir cbind(x,State=c("NY","FL")) # اضافه کردن مولفه به دیتافرم به صورت ستونی SN Age Name State 1 1 20 John NY 2 2 15 Dora FL # همچنین می توانید کارهای زیر را انجام دهید x SN Age Name 1 1 20 John 2 2 15 Dora x$State <- c("NY","FL") x SN Age Name State 1 1 20 John NY 2 2 15 Dora FL |
حذف کردن مولفه ها از Dataframe
با نسبت دادن NULL به هر مولفه ای از دیتافرم می توانید آن را حذف کنید:
1 2 3 4 5 6 7 8 9 10 |
x$State <- NULL x SN Age Name 1 1 20 John 2 2 15 Dora # حذف کردن سطرها از دیتافرم x <- x[-1,] x SN Age Name 2 2 15 Dora |
لطفاً دیدگاه خود را برای ما ارسال کنید.
حتماً بخوانید: