আমি আর ব্যবহার করছি এবং ব্যবহার করে ডেটা ফ্রেমে ডেটা লোড করেছি read.csv()
। আমি কীভাবে ডেটা ফ্রেমে প্রতিটি কলামের ডেটা টাইপ নির্ধারণ করব?
str(...)
স্কেলযোগ্য নয় এবং <100 কোলে বাষ্পের বাইরে চলে যায়।
আমি আর ব্যবহার করছি এবং ব্যবহার করে ডেটা ফ্রেমে ডেটা লোড করেছি read.csv()
। আমি কীভাবে ডেটা ফ্রেমে প্রতিটি কলামের ডেটা টাইপ নির্ধারণ করব?
str(...)
স্কেলযোগ্য নয় এবং <100 কোলে বাষ্পের বাইরে চলে যায়।
উত্তর:
আপনার সেরা বাজি শুরু করা ব্যবহার করা ?str()
। কয়েকটি উদাহরণ এক্সপ্লোর করতে, আসুন কিছু ডেটা করা যাক:
set.seed(3221) # this makes the example exactly reproducible
my.data <- data.frame(y=rnorm(5),
x1=c(1:5),
x2=c(TRUE, TRUE, FALSE, FALSE, FALSE),
X3=letters[1:5])
@ উইলমার ই হেনাও এইচ এর সমাধানটি খুব সুবিন্যস্ত:
sapply(my.data, class)
y x1 x2 X3
"numeric" "integer" "logical" "factor"
ব্যবহারের ফলে str()
আপনি সেই তথ্য এবং অতিরিক্ত গুডি পাবেন (যেমন আপনার উপাদানগুলির স্তর এবং প্রতিটি ভেরিয়েবলের প্রথম কয়েকটি মান):
str(my.data)
'data.frame': 5 obs. of 4 variables:
$ y : num 1.03 1.599 -0.818 0.872 -2.682
$ x1: int 1 2 3 4 5
$ x2: logi TRUE TRUE FALSE FALSE FALSE
$ X3: Factor w/ 5 levels "a","b","c","d",..: 1 2 3 4 5
@ গ্যাভিন সিম্পসন এর এপ্রোচটিও সুবিন্যস্ত, তবে এর থেকে কিছুটা আলাদা তথ্য সরবরাহ করে class()
:
sapply(my.data, typeof)
y x1 x2 X3
"double" "integer" "logical" "integer"
সম্পর্কে আরও তথ্যের জন্য class
, typeof
এবং মধ্যম সন্তান, mode
এই চমৎকার তাই থ্রেড দেখুন: আর 'মোড' এবং 'বর্গ' এবং 'typeof' জিনিস ধরনের এক বিস্তারিত জরিপে অপর্যাপ্ত হয় ।
str(dataframe)
এটি এক নজরে কলামের প্রকারগুলি নির্ধারণ করার দ্রুততম উপায়। অন্যান্য পদ্ধতির জন্য আরও কী-স্ট্রোক প্রয়োজন এবং তত তথ্য প্রদর্শিত হবে না, তবে কলামের ডেটা ধরণের অন্যান্য ফাংশনের ইনপুট হলে সেগুলি সহায়ক।
apply()
? এটা ম্যাট্রিক্সের জন্য। একটি ডেটা ফ্রেম হল একটি (বিশেষ ধরণের) তালিকা list
sapply(yourdataframe, class)
যেখানে আপনার ডেটাফ্রেমটি আপনি ব্যবহার করছেন সেই ডেটা ফ্রেমের নাম
আমি সুপারিশ করবে
sapply(foo, typeof)
আপনার যদি ডেটা ফ্রেমে প্রকৃত ধরণের ভেক্টরগুলির প্রয়োজন হয়। class()
কিছুটা আলাদা জন্তু।
আপনার যদি ভেক্টর হিসাবে এই তথ্য পাওয়ার প্রয়োজন না হয় (যেমন আপনাকে পরবর্তীতে প্রোগ্রামের পরে অন্য কিছু করার দরকার নেই), কেবল ব্যবহার করুন str(foo)
।
উভয় ক্ষেত্রেই foo
আপনার ডেটা ফ্রেমের নামের সাথে প্রতিস্থাপন করা হবে।
কেবলমাত্র নিম্নলিখিত ডেটাতে আপনার ডেটা ফ্রেমটি পাস করুন:
data_types <- function(frame) {
res <- lapply(frame, class)
res_frame <- data.frame(unlist(res))
barplot(table(res_frame), main="Data Types", col="steelblue", ylab="Number of Features")
}
আপনার ডেটা ফ্রেমে সমস্ত ডেটা ধরণের প্লট তৈরি করতে। জন্য Iris ডেটা সেটটি আমরা নিম্নলিখিত পাবেন:
data_types(iris)
ছোট ডেটা ফ্রেমের জন্য:
library(tidyverse)
as_tibble(mtcars)
আপনাকে ডেটা প্রকারের সাথে প্রিন্ট আউট দেয়
# A tibble: 32 x 11
mpg cyl disp hp drat wt qsec vs am gear carb
* <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
1 21 6 160 110 3.9 2.62 16.5 0 1 4 4
2 21 6 160 110 3.9 2.88 17.0 0 1 4 4
3 22.8 4 108 93 3.85 2.32 18.6 1 1 4 1
বড় ডেটা ফ্রেমের জন্য:
glimpse(mtcars)
আপনাকে ডেটা ধরণের একটি কাঠামোগত ভিউ দেয়:
Observations: 32
Variables: 11
$ mpg <dbl> 21.0, 21.0, 22.8, 21.4, 18.7, 18.1, 14.3, 24.4, 22.8, 19.2, 17.8, 16.4, 17....
$ cyl <dbl> 6, 6, 4, 6, 8, 6, 8, 4, 4, 6, 6, 8, 8, 8, 8, 8, 8, 4, 4, 4, 4, 8, 8, 8, 8, ...
$ disp <dbl> 160.0, 160.0, 108.0, 258.0, 360.0, 225.0, 360.0, 146.7, 140.8, 167.6, 167.6...
$ hp <dbl> 110, 110, 93, 110, 175, 105, 245, 62, 95, 123, 123, 180, 180, 180, 205, 215...
$ drat <dbl> 3.90, 3.90, 3.85, 3.08, 3.15, 2.76, 3.21, 3.69, 3.92, 3.92, 3.92, 3.07, 3.0...
$ wt <dbl> 2.620, 2.875, 2.320, 3.215, 3.440, 3.460, 3.570, 3.190, 3.150, 3.440, 3.440...
$ qsec <dbl> 16.46, 17.02, 18.61, 19.44, 17.02, 20.22, 15.84, 20.00, 22.90, 18.30, 18.90...
$ vs <dbl> 0, 0, 1, 1, 0, 1, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, ...
$ am <dbl> 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, ...
$ gear <dbl> 4, 4, 4, 3, 3, 3, 3, 4, 4, 4, 4, 3, 3, 3, 3, 3, 3, 4, 4, 4, 3, 3, 3, 3, 3, ...
$ carb <dbl> 4, 4, 1, 1, 2, 1, 4, 2, 2, 4, 4, 3, 3, 3, 4, 4, 4, 1, 2, 1, 1, 2, 2, 4, 2, ...
কলামগুলির ডেটা টাইপের একটি তালিকা পেতে (উপরে @ আলেকজান্দ্রে বলেছেন)
map(mtcars, class)
তথ্য প্রকারের একটি তালিকা দেয়:
$mpg
[1] "numeric"
$cyl
[1] "numeric"
$disp
[1] "numeric"
$hp
[1] "numeric"
কোনও কলামের ডেটা ধরণের পরিবর্তন করতে:
library(hablar)
mtcars %>%
convert(chr(mpg, am),
int(carb))
কলাম mpg
এবং am
চরিত্র এবং কলামটিকে carb
পূর্ণসংখ্যায় রূপান্তর করে:
# A tibble: 32 x 11
mpg cyl disp hp drat wt qsec vs am gear carb
<chr> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <chr> <dbl> <int>
1 21 6 160 110 3.9 2.62 16.5 0 1 4 4
2 21 6 160 110 3.9 2.88 17.0 0 1 4 4
3 22.8 4 108 93 3.85 2.32 18.6 1 1 4 1
4 21.4 6 258 110 3.08 3.22 19.4 1 0 3 1
যেহেতু এটি পরিষ্কারভাবে বলা হয়নি, আমি কেবল এটি যুক্ত করি:
আমি একটি টেবিল তৈরির জন্য একটি উপায় খুঁজছিলাম যা সমস্ত ডেটা ধরণের সংখ্যার হোল্ড করে ।
বলুন আমাদের data.frame
দুটি সংখ্যাসূচক এবং একটি যৌক্তিক কলাম রয়েছে
dta <- data.frame(a = c(1,2,3),
b = c(4,5,6),
c = c(TRUE, FALSE, TRUE))
আপনি এটির সাথে প্রতিটি ডেটা টাইপের কলামের সংক্ষিপ্তসার জানাতে পারেন
table(unlist(lapply(dta, class)))
# logical numeric
# 1 2
এটি আপনার পক্ষে প্রচুর কলাম রয়েছে এবং একটি দ্রুত ওভারভিউ পেতে চাইলে এটি অত্যন্ত কার্যকর।
ক্রেডিট দেওয়ার জন্য: এই সমাধানটি @ সাইবারনেটিকের উত্তরে অনুপ্রাণিত হয়েছিল ।
এখানে এমন একটি ফাংশন রয়েছে যা হেল্পআরফানিউশনস প্যাকেজের অংশ যা আপনার ডেটা ফ্রেমে বিভিন্ন ডেটা ধরণের সমস্তের পাশাপাশি সেই ধরণের সাথে সম্পর্কিত নির্দিষ্ট ভেরিয়েবলের নামের তালিকা ফিরিয়ে দেবে।
install.package('devtools') # Only needed if you dont have this installed.
library(devtools)
install_github('adam-m-mcelhinney/helpRFunctions')
library(helpRFunctions)
my.data <- data.frame(y=rnorm(5),
x1=c(1:5),
x2=c(TRUE, TRUE, FALSE, FALSE, FALSE),
X3=letters[1:5])
t <- list.df.var.types(my.data)
t$factor
t$integer
t$logical
t$numeric
আপনি তখন কিছু করতে পারে var(my.data[t$numeric])
।
আশা করি এটি সহায়ক!
lapply(your_data, class)
ফর্ম্যাটের জন্য কিছুটা অতিরিক্ত প্রসেসিংয়ের সাথে রয়েছে।
আপনি যদি CSV ফাইলটিকে ডেটা.ফ্রেম (এবং ম্যাট্রিক্স নয়) হিসাবে আমদানি করেন তবে আপনি এটিও ব্যবহার করতে পারেন summary.default
summary.default(mtcars)
Length Class Mode
mpg 32 -none- numeric
cyl 32 -none- numeric
disp 32 -none- numeric
hp 32 -none- numeric
drat 32 -none- numeric
wt 32 -none- numeric
qsec 32 -none- numeric
vs 32 -none- numeric
am 32 -none- numeric
gear 32 -none- numeric
carb 32 -none- numeric
অন্য বিকল্পটি পিউর প্যাকেজটির মানচিত্রের ফাংশনটি ব্যবহার করছে।
library(purrr)
map(df,class)
sapply(..., class))
বা ইন্টারেক্টিভভাবে (উদাহরণস্বরূপstr(...)
) বা উভয়? প্রোগ্রামাগুলিভাবে এটি করার জন্য এটি আরও বেশি স্কেলেবল হয়, তবে আপনি নির্বিচারেFilter(...)
পূর্ণসংখ্যা, অক্ষর, গুণক ইত্যাদির জন্য তালিকা তৈরি করতে পারেন বা কোনও নামকরণ কনভেনশন অনুসরণ করলেgrep/grepl
আপনি কলামের প্রকারগুলি নির্ধারণ করতে ব্যবহার করতে পারেনnames(...)