R တွင် variable အသစ်များဖန်တီးရန် mutate ကိုအသုံးပြုနည်း


ဤသင်ခန်းစာတွင် ဒေတာဘောင်တစ်ခုသို့ ပြောင်းလွဲပြောင်းနိုင်သည့်အသစ်များထည့်ရန် R တွင် mutate() လုပ်ဆောင်ချက်ကို အသုံးပြုပုံကို ရှင်းပြထားသည်။

R တွင် variable အသစ်များထည့်ခြင်း။

ဒေတာဘောင်သို့ ကိန်းရှင်အသစ်များထည့်ရန် အောက်ပါ dplyr စာကြည့်တိုက်လုပ်ဆောင်ချက်များကို အသုံးပြုနိုင်ပါသည်။

mutate() – ရှိပြီးသား ကိန်းရှင်များကို ထိန်းသိမ်းထားစဉ်တွင် ကိန်းရှင်အသစ်များကို ဒေတာဘောင်တစ်ခုသို့ ပေါင်းထည့်သည်။

transmute() – ကိန်းရှင်အသစ်များကို ဒေတာဘောင်တစ်ခုသို့ ပေါင်းထည့်ကာ ရှိပြီးသား ကိန်းရှင်များကို ဖယ်ရှားသည်။

mutate_all() – ဒေတာဘောင်တစ်ခုတွင် ကိန်းရှင်အားလုံးကို တစ်ပြိုင်နက်တည်း ပြင်ဆင်သည်။

mutate_at() – သတ်သတ်မှတ်မှတ် ကိန်းရှင်များကို အမည်ဖြင့် မွမ်းမံသည်။

mutate_if() – သတ်မှတ်ထားသော အခြေအနေနှင့် ကိုက်ညီသော ကိန်းရှင်အားလုံးကို မွမ်းမံသည်။

mutate()

mutate() လုပ်ဆောင်ချက်သည် လက်ရှိကိန်းရှင်အားလုံးကို ထိန်းသိမ်းထားစဉ်တွင် ကိန်းရှင်အသစ်များကို ဒေတာဘောင်တစ်ခုသို့ ပေါင်းထည့်သည်။ mutate() ၏ အခြေခံ syntax မှာ-

 data <- mutate (new_variable = existing_variable/3)
  • ဒေတာ- ကိန်းရှင်အသစ်များကို သတ်မှတ်ပေးမည့် ဒေတာဘလောက်အသစ်
  • new_variable- ကိန်းရှင်အသစ်၏ အမည်
  • ရှိပြီးသား_variable- ကိန်းရှင်အသစ်ကိုဖန်တီးရန် သင်လုပ်ဆောင်မှုတစ်ခုလုပ်ဆောင်လိုသော ဒေတာဘောင်ရှိ ရှိပြီးသားကိန်းရှင်

ဥပမာအားဖြင့်၊ အောက်ပါကုဒ်သည် မြှုပ်ထားသော iris dataset သို့ root_sepal_width variable အသစ်ကို ထည့်သွင်းနည်းကို သရုပ်ပြသည်-

 #define data frame as the first six lines of the iris dataset
data <- head(iris)

#view data
data

# Sepal.Length Sepal.Width Petal.Length Petal.Width Species
#1 5.1 3.5 1.4 0.2 setosa
#2 4.9 3.0 1.4 0.2 setosa
#3 4.7 3.2 1.3 0.2 setosa
#4 4.6 3.1 1.5 0.2 setosa
#5 5.0 3.6 1.4 0.2 setosa
#6 5.4 3.9 1.7 0.4 setosa

#load dplyr library
library(dplyr)

#define new column root_sepal_width as the square root of the Sepal.Width variable
data %>% mutate (root_sepal_width = sqrt(Sepal.Width))

# Sepal.Length Sepal.Width Petal.Length Petal.Width Species root_sepal_width
#1 5.1 3.5 1.4 0.2 setosa 1.870829
#2 4.9 3.0 1.4 0.2 setosa 1.732051
#3 4.7 3.2 1.3 0.2 setosa 1.788854
#4 4.6 3.1 1.5 0.2 setosa 1.760682
#5 5.0 3.6 1.4 0.2 setosa 1.897367
#6 5.4 3.9 1.7 0.4 setosa 1.974842

transmute()

transmute() လုပ်ဆောင်ချက်သည် ကိန်းရှင်အသစ်များကို ဒေတာဘောင်တစ်ခုသို့ ပေါင်းထည့်ကာ ရှိပြီးသား ကိန်းရှင်များကို ဖယ်ရှားသည်။ အောက်ပါကုဒ်သည် ဒေတာအတွဲတစ်ခုတွင် ကိန်းရှင်အသစ်နှစ်ခုကို ထည့်သွင်းနည်းနှင့် ရှိပြီးသားကိန်းရှင်အားလုံးကို ဖယ်ရှားနည်းကို သရုပ်ပြသည်-

 #define data frame as the first six lines of the iris dataset
data <- head(iris)

#viewdata
data

# Sepal.Length Sepal.Width Petal.Length Petal.Width Species
#1 5.1 3.5 1.4 0.2 setosa
#2 4.9 3.0 1.4 0.2 setosa
#3 4.7 3.2 1.3 0.2 setosa
#4 4.6 3.1 1.5 0.2 setosa
#5 5.0 3.6 1.4 0.2 setosa
#6 5.4 3.9 1.7 0.4 setosa

#define two new variables and remove all existing variables
data %>% transmute (root_sepal_width = sqrt(Sepal.Width),
                   root_petal_width = sqrt(Petal.Width))

# root_sepal_width root_petal_width
#1 1.870829 0.4472136
#2 1.732051 0.4472136
#3 1.788854 0.4472136
#4 1.760682 0.4472136
#5 1.897367 0.4472136
#6 1.974842 0.6324555

mutate_all()

mutate_all() လုပ်ဆောင်ချက်သည် funs() လုပ်ဆောင်ချက်ကို အသုံးပြု၍ ကိန်းရှင်အားလုံးတွင် တိကျသောလုပ်ဆောင်ချက်တစ်ခုကို လုပ်ဆောင်နိုင်စေမည့် ဒေတာဘောင်တစ်ခုရှိ ကိန်းရှင်အားလုံးကို တစ်ကြိမ်တည်းတွင် မွမ်းမံပြင်ဆင်ပေးသည်။ အောက်ပါကုဒ်သည် mutate_all() ကို အသုံးပြု၍ ဒေတာဘောင်တစ်ခုတွင် ကော်လံအားလုံးကို 10 ဖြင့် ခွဲနည်းကို သရုပ်ပြသည်-

 #define new data frame as the first six rows of iris without the Species variable
data2 <- head(iris) %>% select(-Species)

#view the new data frame
data2

# Sepal.Length Sepal.Width Petal.Length Petal.Width
#1 5.1 3.5 1.4 0.2
#2 4.9 3.0 1.4 0.2
#3 4.7 3.2 1.3 0.2
#4 4.6 3.1 1.5 0.2
#5 5.0 3.6 1.4 0.2
#6 5.4 3.9 1.7 0.4

#divide all variables in the data frame by 10
data2 %>% mutate_all (funs(./10))

# Sepal.Length Sepal.Width Petal.Length Petal.Width
#1 0.51 0.35 0.14 0.02
#2 0.49 0.30 0.14 0.02
#3 0.47 0.32 0.13 0.02
#4 0.46 0.31 0.15 0.02
#5 0.50 0.36 0.14 0.02
#6 0.54 0.39 0.17 0.04

ကိန်းရှင်အမည်ဟောင်းကို ထပ်ပေါင်းထည့်ရန် အမည်အသစ်ကို သတ်မှတ်ခြင်းဖြင့် ဒေတာဘောင်သို့ ထပ်ဆင့်ကိန်းရှင်များကို ပေါင်းထည့်နိုင်သည်ကို သတိပြုပါ-

 data2 %>% mutate_all (funs(mod = ./10))

# Sepal.Length Sepal.Width Petal.Length Petal.Width Sepal.Length_mod
#1 5.1 3.5 1.4 0.2 0.51
#2 4.9 3.0 1.4 0.2 0.49
#3 4.7 3.2 1.3 0.2 0.47
#4 4.6 3.1 1.5 0.2 0.46
#5 5.0 3.6 1.4 0.2 0.50
#6 5.4 3.9 1.7 0.4 0.54
# Sepal.Width_mod Petal.Length_mod Petal.Width_mod
#1 0.35 0.14 0.02
#2 0.30 0.14 0.02
#3 0.32 0.13 0.02
#4 0.31 0.15 0.02
#5 0.36 0.14 0.02
#6 0.39 0.17 0.04

mutate_at()

mutate_at() လုပ်ဆောင်ချက်သည် သတ်သတ်မှတ်မှတ် ကိန်းရှင်များကို အမည်ဖြင့် ပြုပြင်ပေးသည်။ အောက်ပါကုဒ်သည် mutate_at() ကို အသုံးပြု၍ သီးခြား variable နှစ်ခုကို 10 ဖြင့် ခွဲနည်းကို သရုပ်ပြသည် ။

 data2 %>% mutate_at (c("Sepal.Length", "Sepal.Width"), funs(mod = ./10))

# Sepal.Length Sepal.Width Petal.Length Petal.Width Sepal.Length_mod
#1 5.1 3.5 1.4 0.2 0.51
#2 4.9 3.0 1.4 0.2 0.49
#3 4.7 3.2 1.3 0.2 0.47
#4 4.6 3.1 1.5 0.2 0.46
#5 5.0 3.6 1.4 0.2 0.50
#6 5.4 3.9 1.7 0.4 0.54
# Sepal.Width_mod
#1 0.35
#2 0.30
#3 0.32
#4 0.31
#5 0.36
#6 0.39

mutate_if()

mutate_if() လုပ်ဆောင်ချက်သည် သတ်မှတ်ထားသော အခြေအနေနှင့် ကိုက်ညီသည့် ကိန်းရှင်အားလုံးကို ပြုပြင်ပေးသည်။ အောက်ပါကုဒ်သည် mutate_if() လုပ်ဆောင်ချက်ကို အမျိုးအစား ကိန်းဂဏန်း တစ်ခုခုကို စာလုံး ရိုက် ရန်အတွက် ပြောင်းလဲနိုင်ပုံကို ဖော်ပြသည်။

 #find variable type of each variable in a data frame
data <- head(iris)
sapply(data, class)

#Sepal.Length Sepal.Width Petal.Length Petal.Width Species 
# "numeric" "numeric" "numeric" "numeric" "factor" 

#convert any variable of type factor to type character
new_data <- data %>% mutate_if(is.factor, as.character)
sapply(new_data, class)

#Sepal.Length Sepal.Width Petal.Length Petal.Width Species 
# "numeric" "numeric" "numeric" "numeric" "character"

အောက်ပါကုဒ်သည် ကိန်းဂဏာန်း ကိန်းရှင်အားလုံးကို ဒဿမနေရာတစ်ခုသို့ ဝိုင်းထားရန် mutate_if() လုပ်ဆောင်ချက်ကို အသုံးပြုပုံကို သရုပ်ပြသည်-

 #define data as first six rows of iris dataset
data <- head(iris)

#view data
data

# Sepal.Length Sepal.Width Petal.Length Petal.Width Species
#1 5.1 3.5 1.4 0.2 setosa
#2 4.9 3.0 1.4 0.2 setosa
#3 4.7 3.2 1.3 0.2 setosa
#4 4.6 3.1 1.5 0.2 setosa
#5 5.0 3.6 1.4 0.2 setosa
#6 5.4 3.9 1.7 0.4 setosa

#round any variables of type numeric to one decimal place
data %>% mutate_if(is.numeric, round, digits = 0)

# Sepal.Length Sepal.Width Petal.Length Petal.Width Species
#1 5 4 1 0 setosa
#2 5 3 1 0 setosa
#3 5 3 1 0 setosa
#4 5 3 2 0 setosa
#5 5 4 1 0 setosa
#6 5 4 2 0 setosa

နောက်ထပ်ဖတ်ရန်:
R တွင် apply(), lapply(), sapply() နှင့် tapply() တို့ဖြစ်သည်။
R မှာ လိုင်းတွေကို ဘယ်လိုစီစဉ်မလဲ။
R တွင် အတန်းများကို စစ်ထုတ်နည်း

မှတ်ချက်တစ်ခုထည့်ပါ။

သင့် email လိပ်စာကို ဖော်ပြမည် မဟုတ်ပါ။ လိုအပ်သော ကွက်လပ်များကို * ဖြင့်မှတ်သားထားသည်