搜尋感興趣的網誌

所有文章連結

2022年3月23日 星期三

R Packages dplyr - mutate | R包dplyr - mutate

 


mutate()可以依照選擇的欄位變量,創造一個新的變量出來,並且可以使用不同的操作、計算達到數據整理的目的。

 

基本語法

mutate(dataset, new_var = old_var)

 

載入dplyr

library(dplyr)


先設定一個欄位數據做為演示

# 新建tibble框
dplyr_operate <- tibble(id = c(12345,54312))

# 結果輸出
r$> dplyr_operate # A tibble: 2 x 1 id <dbl> 1 12345 2 54312


將舊的名稱變更新的名稱,等於rename()的效果,可以在調整變量時一併處理名稱的部分,除非新舊名稱一樣,否則會留著舊的變量

# 建立欄位變量
mutate(dplyr_operate,
    member_id = id)

# 結果輸出
# A tibble: 2 x 2 id member_id <dbl> <dbl> 1 12345 12345 2 54312 54312


也可以將日期取出並新增新的欄位變量,新增一個tibble的表格,並且利用lubrdate取出其中的日期數值

# 建立表格
data_time <- tibble(
    date = c("2022-01-01 11:50:20", "2022-02-01 11:50:20")
    )
data_time$date <- as.POSIXct(data_time$date)

# 結果輸出
r$> data_time # A tibble: 2 x 1 date <dttm> 1 2022-01-01 11:50:20 2 2022-02-01 11:50:20

# 利用mutate取出值並建立新欄位變量
data_time <- mutate(time, year = year(date))
data_time <- mutate(time, day = mday(date))

# 結果輸出
r$> data_time # A tibble: 2 x 3 date year day <chr> <dbl> <int> 1 2022-01-01 11:50:20 2022 1 2 2022-02-01 11:50:20 2022 1


搭配recode進行變量值的修改

# 建立字符數據框
data_df <- tibble(
    fruit = c("apple", "banana")
    )

# 結果輸出
r$> data_df # A tibble: 2 x 1 fruit <chr> 1 apple 2 banana

# 創造新變量與調整數值
data_df <- mutate(
    data_df,
    new_fruit = recode(fruit, "apple" = "orange")
    )

# 結果輸出
r$> data_df # A tibble: 2 x 2 fruit new_fruit <chr> <chr> 1 apple orange 2 banana banana 


抑或是想要計算後輸出新變量

# 建立數據框
data_calculate <- tibble(
    num = c(1,2,3)
    )

# 結果輸出
r$> data_calculate # A tibble: 3 x 1 num <dbl> 1 1 2 2 3 3

# 增加變量與調整數值
data_calculate <- mutate(
    data_calculate,
    new_num = (num * 10)
    )

# 結果輸出
r$> data_calculate # A tibble: 3 x 2 num new_num <dbl> <dbl> 1 1 10 2 2 20 3 3 30


如果不想新增欄位變數,只要新欄位名 = 舊欄位名舊可以,但是不建議這樣做,一旦出錯舊需要重新來了,在整理數據的階段使用並搭配其他函數能大幅提升整理的效率。

沒有留言:

張貼留言

其他文章

看看精選文章

納希克房價分析 | Nashik Apartment Price Analyze – 語法解析(上)

  這次 Nashik 的房價分析有上傳至 Kaggle ,有興趣的朋友可以前往閱覽, RMarkdown PDF 報告存放在 Google 雲端,程式碼則是存放於 Github ,照慣例會分享好用的函式語法,雖說基本的 Packages 與語法可能很多人都會完整的閱覽,但是實際...