R တွင် data.table နှင့် ဒေတာဘောင်- အဓိက ကွာခြားချက် သုံးခု
R ပရိုဂရမ်းမင်းဘာသာစကားတွင် data.frame သည် R ဒေတာဘေ့စ်၏ အစိတ်အပိုင်းဖြစ်သည်။
data.table ပက်ကေ့ဂျ်၏ setDF လုပ်ဆောင်ချက်ကို အသုံးပြု၍ မည်သည့် data.frame ကို data.table သို့ ပြောင်းနိုင်သည်။
data.table သည် R ရှိ data.frame တစ်ခုထက် အောက်ပါအားသာချက်များကို ပေးဆောင်သည်-
1. data.table တစ်ခုသို့ ဖိုင်တစ်ခုသို့ ဖိုင်တစ်ခုဖတ်ရန် fread function ကို data.table တစ်ခုသို့ ဖတ်ရန် read.csv ကဲ့သို့သော အခြေခံ R function များထက် များစွာ ပိုမြန်သည်၊ data.frame ထဲသို့ ဖိုင်များကို ဖတ်နိုင်သည်။
2. data.table တစ်ခုပေါ်တွင် data.frame ထက် များစွာ ပိုမြန်သော လုပ်ဆောင်ချက်များ (အုပ်စုဖွဲ့ခြင်းနှင့် ပေါင်းစည်းခြင်းကဲ့သို့) လုပ်ဆောင်နိုင်ပါသည်။
3. ကွန်ဆိုးလ်တစ်ခုသို့ data.frame ကို ပရင့်ထုတ်သောအခါ၊ R သည် data.frame တွင် အတန်းတစ်ခုစီကို ပရင့်ထုတ်ရန် ကြိုးစားမည်ဖြစ်သည်။ သို့သော်လည်း data.table သည် dataset ကြီးတစ်ခုဖြင့်အလုပ်လုပ်နေပါက သင်၏ session ကိုဆွဲထားရန် သို့မဟုတ် ပျက်သွားခြင်းမှကာကွယ်ပေးမည့် ပထမတန်း 100 ကိုသာပြသပါမည်။
အောက်ပါနမူနာများသည် လက်တွေ့တွင် data.frames နှင့် data.tables များကြားတွင် ဤကွဲပြားမှုများကို ဖော်ပြသည်။
ကွာခြားချက် #1- fread ဖြင့် ပိုမိုမြန်ဆန်စွာ တင်သွင်းခြင်း။
အောက်ပါကုဒ်သည် data.table ပက်ကေ့ဂျ်နှင့် R ဒေတာဘေ့စ်မှ read.csv လုပ်ဆောင်ချက်ကို fread လုပ်ဆောင်ချက်ကို အသုံးပြု၍ အတန်း 10,000 နှင့် ကော်လံ 100 ၏ ဒေတာဘောင်တစ်ခုကို မည်သို့တင်သွင်းရမည်ကို ပြသသည်-
library (microbenchmark) library (data.table) #make this example reproducible set. seeds (1) #create data frame with 10,000 rows and 100 columns df <- as. data . frame (matrix(runif(10^4 * 100), nrow = 10^4)) #export CSV to current working directory write.write. csv (df, " test.csv ", quote = FALSE ) #import CSV file using fread and read.csv and time how long it takes results <- microbenchmark( read.csv = read. csv (" test.csv ", header = TRUE , stringsAsFactors = FALSE ), fread = fread(" test.csv ", sep = ",", stringsAsFactors = FALSE ), times = 10) #view results results Unit: milliseconds expr min lq mean median uq max neval cld read.csv 817.1867 892.8748 1026.7071 899.5755 926.9120 1964.0540 10 b fread 113.5889 116.2735 136.4079 124.3816 136.0534 211.7484 10 a
ရလဒ်များမှ၊ fread သည် read.csv လုပ်ဆောင်ချက်နှင့် နှိုင်းယှဉ်ပါက ဤ CSV ဖိုင်ကို တင်သွင်းရန် 10 ဆ ပိုမိုမြန်ဆန်ကြောင်း ကျွန်ုပ်တို့ တွေ့နိုင်ပါသည်။
ပိုကြီးသော ဒေတာအတွဲများအတွက် ဤကွာခြားချက်သည် ပို၍ကြီးမားလိမ့်မည်ကို သတိပြုပါ။
ကွာခြားချက် #2- data.table ဖြင့် ပိုမိုမြန်ဆန်သော ဒေတာကို ခြယ်လှယ်ခြင်း။
ယေဘူယျအားဖြင့်၊ data.table သည် data.frame ထက် များစွာပိုမြန်သည့် မည်သည့်ဒေတာကိုမဆို ကိုင်တွယ်လုပ်ဆောင်နိုင်သည် ။
ဥပမာအားဖြင့်၊ အောက်ပါကုဒ်သည် data.table နှင့် data.frame နှစ်ခုလုံးရှိ အခြားသော variable တစ်ခုဖြင့် အုပ်စုဖွဲ့ထားသည့် variable တစ်ခု၏ ပျမ်းမျှတွက်ချက်နည်းကို ပြသသည်-
library (microbenchmark)
library (data.table)
#make this example reproducible
set.seed(1)
#create data frame with 10,000 rows and 100 columns
d_frame <- data. frame (team=rep(c(' A ', ' B '), each=5000),
points=c(rnorm(10000, mean=20, sd=3)))
#create data.table from data.frame
d_table <- setDT(d_frame)
#calculate mean of points grouped by team in data.frame and data.table
results <- microbenchmark(
mean_d_frame = aggregate(d_frame$points, list(d_frame$team), FUN=mean),
mean_d_table = d_table[ ,list(mean=mean(points)), by=team],
times = 10)
#view results
results
Unit: milliseconds
expr min lq mean median uq max neval cld
mean_d_frame 2.9045 3.0077 3.11683 3.1074 3.1654 3.4824 10 b
mean_d_table 1.0539 1.1140 1.52002 1.2075 1.2786 3.6084 10 a
ရလဒ်များမှ၊ data.table သည် data.frame ထက် သုံးဆခန့် ပိုမြန်သည်ကို တွေ့နိုင်သည်။
ပိုကြီးသော ဒေတာအတွဲများအတွက်၊ ဤကွာခြားချက်သည် ပို၍ပင် ကြီးမားပါလိမ့်မည်။
ကွာခြားချက် #3- data.table ဖြင့် ရိုက်နှိပ်ထားသော အတန်းများ နည်းပါးသည်။
ကွန်ဆိုးလ်တစ်ခုသို့ data.frame ကို ပရင့်ထုတ်သည့်အခါ R သည် data.frame တွင် အတန်းတစ်ခုစီကို ပရင့်ထုတ်ရန် ကြိုးစားမည်ဖြစ်သည်။
သို့သော်လည်း data.table သည် dataset ကြီးတစ်ခုဖြင့်အလုပ်လုပ်နေပါက သင်၏ session ကိုဆွဲထားရန် သို့မဟုတ် ပျက်သွားခြင်းမှကာကွယ်ပေးမည့် ပထမတန်း 100 ကိုသာပြသပါမည်။
ဥပမာအားဖြင့်၊ အောက်ပါကုဒ်တွင်၊ ကျွန်ုပ်တို့သည် ဒေတာဘောင်တစ်ခုနှင့် အတန်း 200 ရှိသည့် data.table နှစ်ခုလုံးကို ဖန်တီးပါသည်။
data.frame ကို ပရင့်ထုတ်သောအခါ၊ R သည် data.table ကို ပရင့်ထုတ်စဉ်တွင် အတန်းတစ်ခုစီကို ပရင့်ထုတ်ရန် ကြိုးစားမည်ဖြစ်သည်။table သည် ပထမငါးတန်းနှင့် နောက်ဆုံးငါးတန်းကိုသာ ပြသလိမ့်မည်-
library (data.table) #make this example reproducible set. seeds (1) #create data frame d_frame <- data. frame (x=rnorm(200), y=rnorm(200), z=rnorm(200)) #view data frame d_frame X Y Z 1 -0.055303118 1.54858564 -2.065337e-02 2 0.354143920 0.36706204 -3.743962e-01 3 -0.999823809 -1.57842544 4.392027e-01 4 2.586214840 0.17383147 -2.081125e+00 5 -1.917692199 -2.11487401 4.073522e-01 6 0.039614766 2.21644236 1.869164e+00 7 -1.942259548 0.81566443 4.740712e-01 8 -0.424913746 1.01081030 4.996065e-01 9 -1.753210825 -0.98893038 -6.290307e-01 10 0.232382655 -1.25229873 -1.324883e+00 11 0.027278832 0.44209325 -3.221920e-01 ... #create data table d_table <- setDT(d_frame) #view data table d_table X Y Z 1: -0.05530312 1.54858564 -0.02065337 2: 0.35414392 0.36706204 -0.37439617 3: -0.99982381 -1.57842544 0.43920275 4: 2.58621484 0.17383147 -2.08112491 5: -1.91769220 -2.11487401 0.40735218 --- 196: -0.06196178 1.08164065 0.58609090 197: 0.34160667 -0.01886703 1.61296255 198: -0.38361957 -0.03890329 0.71377217 199: -0.80719743 -0.89674205 -0.49615702 200: -0.26502679 -0.15887435 -1.73781026
၎င်းသည် data.frame ထက် data.frame မှ ပေးဆောင်သည့် အားသာချက်ဖြစ်ပါသည်၊ အထူးသဖြင့် သင်သည် ကွန်ဆိုးလ်သို့ မတော်တဆ print ထုတ်ခြင်းမပြုလိုသော ကြီးမားသောဒေတာအတွဲများနှင့် အလုပ်လုပ်သောအခါတွင်ဖြစ်သည်။
ထပ်လောင်းအရင်းအမြစ်များ
အောက်ဖော်ပြပါ သင်ခန်းစာများသည် R တွင် အခြားဘုံအလုပ်များကို မည်သို့လုပ်ဆောင်ရမည်ကို ရှင်းပြသည်-
R ရှိ ဒေတာဘောင်သို့ အတန်းများထည့်နည်း
R တွင် အချို့သောကော်လံများကို မည်သို့ထိန်းသိမ်းနည်း
R တွင် ဂဏန်းကော်လံများကိုသာ ရွေးနည်း