搜尋感興趣的網誌

所有文章連結

2022年3月26日 星期六

R Packages dplyr - summarise | R包dplyr - summarise

 


summarise函數基本上都是與group_by一同使用,輸出的項目除了字符無法進行統計外,數字、浮點數、因子都可以進行統計,統計輸出的項目基本有以下六種

Min.        >> 欄位值範圍的最小值

1st Qu.    >> 第一四分位數

Median    >> 中位數

Mean       >> 平均數

3rd Qu    >> 第三四分衛數

Max.       >> 欄位值範圍的最大值


若是沒有透過group_by分組,想單純整個數據集進行統計,也有`summary()`函數可以使用,輸出的項目也是一樣以上六種,對於summarise的異變函數也有`summarise_all()`等等,以下挑出幾個逐步的介紹


summarise基本語法

group_by() %>%

    summarise(欄位變量)


summary基本語法

summary(dataset) or summarise(dataset$欄位變量)


輔助函數

中心計算函數 : `mean()`、`median()`..

統計函數 : `sd()`、`mad()`..

範圍計算 : `min()`、`max()`、`quantile()`..

計數函數 : `n()`..


首先來創建一個包含浮點數、整數、字符與因子的數據框

# 創建數據框
summarise_df_1 <- tibble(
    number = as.integer(c(1, 2, -3, 4, -5, 1, 1, -5, 7)),
    float = as.numeric(c(1.1, 2.6, 5.8, 3.9, 55.77, 82.34, 99.1, 23.6, 45.4)),
    letter = c("ap", "ef", "tg", "hk", "bu", "xi", "ux", "it", NA),
    weekday = c("Sunday", "Wednesday", "Monday", "Friday", "Saturday",
                "Tuesday", "Thursday", "Sunday", "Wednesday"),
    factor = as.factor(c("a", "b", "c", "a", "c", "a", "d", "k", "e"))
    )


先使用summary進行整個數據集彙整,可以看到除了字符外,都直接進行彙整輸出,因子的部分則是進行各個值的分組統計數量

# summary彙整
summary(summarise_df_1)

# 輸出結果
r$> summary(summarise_df_1) number float letter weekday factor Min. :-5.0000 Min. : 1.10 Length:9 Length:9 a:3 1st Qu.:-3.0000 1st Qu.: 3.90 Class :character Class :character b:1 Median : 1.0000 Median :23.60 Mode :character Mode :character c:2 Mean : 0.3333 Mean :35.51 d:1 3rd Qu.: 2.0000 3rd Qu.:55.77 e:1 Max. : 7.0000 Max. :99.10 k:1


接下來將weekday進行分組,看對應值的最大值與平均值彙整情況

summarise_weekday <- summarise_df_1 %>%
    group_by(weekday) %>%
    summarise(
        number = mean(number),
        float = max(float)
        )

# 輸出結果
r$> summarise_weekday # A tibble: 7 x 3 weekday number float <chr> <dbl> <dbl> 1 Friday 4 3.9 2 Monday -3 5.8 3 Saturday -5 55.8 4 Sunday -2 23.6 5 Thursday 1 99.1 6 Tuesday 1 82.3 7 Wednesday 4.5 45.4


再來將因子欄位分組後觀察對應值的標準差與計數數量,可以看到使用n()後自動將weekday欄位的值進行統計數量後輸出

summarise_weekday <- summarise_df_1 %>%
    group_by(factor) %>%
    summarise(
        float = sd(float),
        total = n()
        )

# 輸出結果
r$> summarise_weekday # A tibble: 7 x 3 weekday float total <chr> <dbl> <int> 1 Friday NA 1 2 Monday NA 1 3 Saturday NA 1 4 Sunday 15.9 2 5 Thursday NA 1 6 Tuesday NA 1 7 Wednesday 30.3 2


倘若分組變量不只一個如何計算?可以看到輸出結果只計算唯一對應值的總額計數

summarise_weekday <- summarise_df_1 %>%
    group_by(factor, letter) %>%
    summarise(
        total = n()
        )

# 輸出結果
r$> summarise_weekday # A tibble: 9 x 3 # Groups: factor [6] factor letter total <fct> <chr> <int> 1 a ap 1 2 a hk 1 3 a xi 1 4 b ef 1 5 c bu 1 6 c tg 1 7 d ux 1 8 e NA 1 9 k it 1


最後如果整份數據集需要的是分組後進行一樣的統計方式,則可以使用summarise_all函數進行統計,須注意的是summarise_all只統計數值,若是分組完尚有不是數值的欄位,輸出的值會變成NA

# 分組完對所有欄位進行平均值的計算
summarise_weekday <- summarise_df_1 %>%
    group_by(weekday) %>%
    summarise_all(mean)

# 輸出結果
r$> summarise_weekday # A tibble: 7 x 5 weekday number float letter factor <chr> <dbl> <dbl> <dbl> <dbl> 1 Friday 4 3.9 NA NA 2 Monday -3 5.8 NA NA 3 Saturday -5 55.8 NA NA 4 Sunday -2 12.4 NA NA 5 Thursday 1 99.1 NA NA 6 Tuesday 1 82.3 NA NA 7 Wednesday 4.5 24 NA NA


可以擴大分組,或是在統計前將不是數值的欄位移除

# 統計前移除不需要的欄位
summarise_weekday <- summarise_df_1 %>%
    group_by(weekday) %>%
    select(-c("letter", "factor")) %>%
    summarise_all(mean)

# 輸出結果
r$> summarise_weekday # A tibble: 7 x 3 weekday number float <chr> <dbl> <dbl> 1 Friday 4 3.9 2 Monday -3 5.8 3 Saturday -5 55.8 4 Sunday -2 12.4 5 Thursday 1 99.1 6 Tuesday 1 82.3 7 Wednesday 4.5 24

2022年3月25日 星期五

R Packages dplyr - distinct | R包dplyr - distinct

 


面對一堆凌亂數據,想查找那些值是唯一的值時,dplyr包中就有一個函數可以方便的進行查詢,特別的是這個函數無法使用"$"連結欄位變量進行。

 

基本語法

distinct(dataset,  欄位變量, .keep_all = FALSE)

參數

.keep_al = FALSE >> 預設為FALSE,如果設定為TRUE,則會將欄位對應的的值做保留,FLASE則是只有抓取第一行的唯一值


基本的查詢

# 創建一個數據框包含NA
bind_df_1 <- tibble(
    number = c(1, 2, -3, 4, -5, 1, 1, -5, 7),
    letter = c("ap", "ef", "tg", "hk", "bu", "xi", "ux", "it", NA)
    )

# 查找唯一值
distinct(bind_df_1)

# 輸出結果
r$> distinct(bind_df_1) # A tibble: 9 x 2 number letter <dbl> <chr> 1 1 ap 2 2 ef 3 -3 tg 4 4 hk 5 -5 bu 6 1 xi 7 1 ux 8 -5 it 9 7 NA


加入參數後進行查詢,沒有指定欄位時,變成各個欄位對應的唯一值

# 加入參數
distinct(bind_df_1, .keep_all = TRUE)

# 輸出結果
r$> distinct(bind_df_1, .keep_all = TRUE) # A tibble: 9 x 2 number letter <dbl> <chr> 1 1 ap 2 2 ef 3 -3 tg 4 4 hk 5 -5 bu 6 1 xi 7 1 ux 8 -5 it 9 7 NA


指定欄位查詢後僅顯示該欄位的唯一值

# 指定欄位
distinct(bind_df_1, number)

# 輸出結果
r$> # 指定欄位 distinct(bind_df_1, number) # A tibble: 6 x 1 number <dbl> 1 1 2 2 3 -3 4 4 5 -5 6 7


加入指定欄位與參數後,顯示指定欄位的唯一值與"對應的第一個值",其餘的就不顯示了

# 指定欄位並加入參數
distinct(bind_df_1, number, .keep_all = TRUE)

# 輸出結果
r$> distinct(bind_df_1, number, .keep_all = TRUE) # A tibble: 6 x 2 number letter <dbl> <chr> 1 1 ap 2 2 ef 3 -3 tg 4 4 hk 5 -5 bu 6 7 NA


簡單的查詢搭配$定位欄位變量,unique與distinct差異

# 使用$指定欄位
distinct(bind_df_1$number)

# 輸出結果
r$> distinct(bind_df_1$number) Error in UseMethod("distinct") : no applicable method for 'distinct' applied to an object of class "c('double', 'numeric')"

# 使用base包的unique搭配$指定欄位
unique(bind_df_1$number)

# 輸出結果
r$> unique(bind_df_1$number) [1] 1 2 -3 4 -5 7

R Packages dplyr - bind | R包dplyr - bind

 


現在很多數據資料都存放在資料庫中,分析有時需要其他的數據做為比對,參考,甚至一併使用,如何正確合併數據也成為很重要的事情,base包內也有類似的合併函數,在這裡一併拿來做個基本比對。

 

基本語法

bind_rows(dataset, dataset..)

bind_cols(dataset, dataset..)

 

base包的合併語法

rbind(dataset, deparse.level = 1…)
cbind(dataset, deparse.level = 1…)

merge(dataset1, dataset2)

 

dplyrbind系列,有些規範,如果是照clos合併,rows就會按照名稱進行匹配,有缺失的就補上NA,如果照rows合併,clos就會按照位置匹配,所以要有相同的col數,來看一下基本合併的方式

# 建立同樣都是1 X 5的數據框
bind_df_1 <- tibble(c(1, 2, -3, 4, -5))
bind_df_2 <- tibble(c("ap", "ef", "tg", "hk", "bu"))
 
# 按照行合併
col_df <- bind_cols(bind_df_1, bind_df_2)
 
# 輸出結果
r$> col_df
# A tibble: 5 x 2
  `c(1, 2, -3, 4, -5)` `c("ap", "ef", "tg", "hk", "bu")`
                 <dbl> <chr>
1                    1 ap
2                    2 ef
3                   -3 tg
4                    4 hk
5                   -5 bu
 
# 按照列合併
row_df <- bind_rows(bind_df_1, bind_df_2)
 
r$> row_df
# A tibble: 10 x 2
   `c(1, 2, -3, 4, -5)` `c("ap", "ef", "tg", "hk", "bu")`
                  <dbl> <chr>
 1                    1 NA
 2                    2 NA
 3                   -3 NA
 4                    4 NA
 5                   -5 NA
 6                   NA ap
 7                   NA ef
 8                   NA tg
 9                   NA hk
10                   NA bu


當有複數的數據集進行合併時,沒有設定欄位標籤時,只有出現型態。

# 建立數據框
bind_df_1 <- tibble(c(1, 2, -3, 4, -5))
bind_df_2 <- tibble(c("ap", "ef", "tg", "hk", "bu"))
bind_df_3 <- tibble(c(22.3, 57.1, 69.4, 12.7, 70.34))
bind_df_4 <- tibble(c("Sunday", "Wednesday", "Monday", "Friday", "Saturday"))

# 按照行合併
cols_df <- bind_cols(bind_df_1, bind_df_2, bind_df_3, bind_df_4)

# 輸出結果
r$> cols_df # A tibble: 5 x 4 `c(1, 2, -3, 4, -5)` `c("ap", "ef", "t~ `c(22.3, 57.1, 69.~ `c("Sunday", "Wedne~ <dbl> <chr> <dbl> <chr> 1 1 ap 22.3 Sunday 2 2 ef 57.1 Wednesday 3 -3 tg 69.4 Monday 4 4 hk 12.7 Friday 5 -5 bu 70.3 Saturday

# 按照列合併
rows_df <- bind_rows(bind_df_1, bind_df_2, bind_df_3, bind_df_4)

# 輸出結果
r$> rows_df # A tibble: 20 x 4 `c(1, 2, -3, 4, -5)` `c("ap", "ef", "t~ `c(22.3, 57.1, 69~ `c("Sunday", "Wedne~ <dbl> <chr> <dbl> <chr> 1 1 NA NA NA 2 2 NA NA NA 3 -3 NA NA NA 4 4 NA NA NA 5 -5 NA NA NA 6 NA ap NA NA 7 NA ef NA NA 8 NA tg NA NA 9 NA hk NA NA 10 NA bu NA NA 11 NA NA 22.3 NA 12 NA NA 57.1 NA 13 NA NA 69.4 NA 14 NA NA 12.7 NA 15 NA NA 70.3 NA 16 NA NA NA Sunday 17 NA NA NA Wednesday 18 NA NA NA Monday 19 NA NA NA Friday 20 NA NA NA Saturday


若是不同大小的合併,不同col數就無法合併了,但由此也可以知道,合併後或多或少會產生NA值,除非整個數據集大小完全相同,就看後續怎麼進行NA值的處理了

# 建立數據框
bind_df_1 <- tibble(c(1, 2, -3, 4, -5))
bind_df_5 <- tibble(c(123, 246, -334, 455, -51, 24, 223, 644))

# 按照行合併
col_df <- bind_cols(bind_df_1, bind_df_5)

# 輸出結果
r$> col_dfdf <- bind_cols(bind_df_1, bind_df_5) Error: Can't recycle `..1` (size 5) to match `..2` (size 8). Run `rlang::last_error()` to see where the error occurred.

# 按照列合併
rows_df <- bind_rows(bind_df_1, bind_df_5)

# 輸出結果
r$> rows_df # A tibble: 13 x 2 `c(1, 2, -3, 4, -5)` `c(123, 246, -334, 455, -51, 24, 223, 644)` <dbl> <dbl> 1 1 NA 2 2 NA 3 -3 NA 4 4 NA 5 -5 NA 6 NA 123 7 NA 246 8 NA -334 9 NA 455 10 NA -51 11 NA 24 12 NA 223 13 NA 644


若是base包內的合併函數

rbind() >> 需要有相同的列才能合併,合併後依序延伸下去

cbind() >> 將不同的行進行合併,合併後產生新的行,可以多個數據集合併

# 建立數據框
bind_df_1 <- tibble(
    number = c(1, 2, -3, 4, -5)
    )

bind_df_2 <- tibble(
    letter = c("ap", "ef", "tg", "hk", "bu")
    )

bind_df_3 <- tibble(
    number = c(22.3, 57.1, 69.4, 12.7, 70.34)
    )

# 使用base包內的rbind函數
rbind(bind_df_1, bind_df_2)

# 輸出結果 >> 沒有相同欄位無法合併
r$> rbind(bind_df_1, bind_df_2) Error in match.names(clabs, names(xi)) : 名稱同原來已有的名稱不相對

# 使用base包內的cbind函數
cbind(bind_df_1, bind_df_2)

# 輸出結果
r$> cbind(bind_df_1, bind_df_2) number letter
1 1 ap 2 2 ef 3 -3 tg 4 4 hk 5 -5 b

# 同樣有number欄位
rbind(bind_df_1, bind_df_3)

# 輸出結果
r$> rbind(bind_df_1, bind_df_3) # A tibble: 10 x 1 number <dbl> 1 1 2 2 3 -3 4 4 5 -5 6 22.3 7 57.1 8 69.4 9 12.7
10 70.3

# 同樣有number欄位
cbind(bind_df_1, bind_df_3)

# 輸出結果
r$> cbind(bind_df_1, bind_df_3)
  number number
1      1  22.30
2      2  57.10
3     -3  69.40
4      4  12.70
5     -5  70.34


最後看一下base包內的merge函數,merge有數據數量限制,一次只能兩個數據集合併,合併後會進行對應擴充,若是名稱相同則無法合併

# 合併上面的數據
merge(bind_df_1, bind_df_2)

# 輸出結果
r$> merge(bind_df_1, bind_df_2) number letter 1 1 ap 2 2 ap 3 -3 ap 4 4 ap 5 -5 ap 6 1 ef 7 2 ef 8 -3 ef 9 4 ef 10 -5 ef 11 1 tg 12 2 tg 13 -3 tg 14 4 tg 15 -5 tg 16 1 hk 17 2 hk 18 -3 hk 19 4 hk 20 -5 hk 21 1 bu 22 2 bu 23 -3 bu 24 4 bu 25 -5 bu

# 合併上面的數據
merge(bind_df_1, bind_df_3)

# 輸出結果
r$> merge(bind_df_1, bind_df_3) [1] number <0 列> (或零長度的 row.names




































2022年3月24日 星期四

R Packages dplyr - group_by | R包dplyr - group_by

 


group_by的用處將選擇的欄位變量分組,可以單獨使用,但更多的是結合其他函數(select、filter、summaise、mutate)進行計算輸出,通常都是與summarise進行統計的計算,要注意的是進行分組統計時,最好先將欄位的型態、錯誤數值調整好,才不會出來的結果不盡理想。


基本語法

group_by(dataset, 想分組的欄位變量..)



先來創建一個基本的tibble進行演示

# 創建一個tibble存入數值
num_df <- tibble(
    number = c(1, 2, -1, 5, 8, 9),
    letter = c("a", "b", "c", "a", "c", "a")
)

# 輸出結果
r$> num_df # A tibble: 6 x 2 number letter <dbl> <chr> 1 1 a 2 2 b 3 -1 c 4 5 a 5 8 c 6 9 a


先進行基本的分組試試看,沒有設定分組後的計算方式,出來的結果也沒有甚麼變化

# 將letter分組
group_by(num_df, letter)

# 輸出結果
r$> group_by(num_df, letter) # A tibble: 6 x 2 # Groups: letter [3] number letter <dbl> <chr> 1 1 a 2 2 b 3 -1 c 4 5 a 5 8 c 6 9 a


加入通道與summarise計算各個字母對應的平均值,a(1 + 5 + 8) / 3 >> 5,b(2) / 1 >> 2,c(-1 + 8) / 2 >> 3.5

# 將letter分組後計算平均值
num_df <- group_by(num_df, letter) %>%
    summarise(
        number = mean(number)
        )

# 輸出結果
r$> num_df # A tibble: 3 x 2 letter number <chr> <dbl> 1 a 5 2 b 2 3 c 3.5


添加filter過濾會有比較特殊的情況要小心使用,分組完成後再進行過濾或者分組與過濾一同進行會產生不同的結果。

# 將letter分組存入變量
num_df_v1 <- group_by(num_df, letter)
# 將分組完成的變量進行篩選
num_df_v1 <- filter(num_df_v1, number < 1)

# 輸出結果
r$> num_df_v1 # A tibble: 1 x 2 # Groups: letter [1] number letter <dbl> <chr> 1 -1 c

# 加上pipes直接計算
num_df_v2 <- num_df %>%
    group_by(letter) %>%
    filter(
        number < -1
    )

# 輸出結果 >> 數值是空的
r$> num_df_v2 # A tibble: 0 x 2 # Groups: letter [0] # ... with 2 variables: number <dbl>, letter <chr>


至於配合mutate使用上來說,分開使用或是結合pipes都沒有filter的狀況

# 將letter分組存入變量
num_df_v1 <- group_by(num_df, letter)
# 將分組完成的變量搭配mutate
num_df_v1 <- mutate(num_df_v1, new_number = mean(number))

# 輸出結果
r$> num_df_v1 # A tibble: 6 x 3 # Groups: letter [3] number letter new_number <dbl> <chr> <dbl> 1 1 a 5 2 2 b 2 3 -1 c 3.5 4 5 a 5 5 8 c 3.5 6 9 a 5

# 加上pipes直接計算
num_df_v2 <- num_df %>%
    group_by(letter) %>%
    mutate(new_number = mean(number))

# 輸出結果
r$> num_df_v2 # A tibble: 6 x 3 # Groups: letter [3] number letter new_number <dbl> <chr> <dbl> 1 1 a 5 2 2 b 2 3 -1 c 3.5 4 5 a 5 5 8 c 3.5 6 9 a 5





















R basic operation | R基礎操作

 


在認識R語言之前,小雷已經有上過Python的課程,所以一開接觸R,對於一些操作有點搞不清楚,多嘗試幾次後才慢慢熟練,這篇希望介紹一些基礎的語法,也會不定期更新基礎的操作。


關於R Packages介紹 >> 請點我

R語言的輸入輸出 >> 請點我


基礎操作

  • 賦值<- : 賦值的用意在於將右邊的值賦予到左邊的變量之中,中間用的是” <- “,類似一個方向的箭頭,在python中就只是簡單的” = ”R的賦值不是很好輸入,所以若是用VScode就需要設定快捷鍵,RStudio則是本身就有快捷鍵,若是方向相反,則意義相反,但好像不是那麼常用到就是了。

# 賦值 <-
num_df <- tibble(number = c(1,2,3,4,5,6,7,8,9))

 

  • 範圍選取[] : 有時數據集中的數據過多,想先選擇一個範圍,或是要刪除某些值時就會用到,寫法上要注意的是最末端一定要加一個逗點作為結束,否則會出現錯誤。

# 錯誤的輸入
num_df[1:5]
 
# 輸出結果
Error: Can't subset columns that don't exist.
x Locations 2, 3, 4, and 5 don't exist.
i There are only 1 column.
 
 
# 選取範圍(變量中的範圍,不是特定值)
num_df[1:5, ]
 
# 輸出結果
r$> num_df[1:5, ]
# A tibble: 5 x 1
  number
   <dbl>
1      1
2      2
3      3
4      4
5      5
 
# 選取特定值
num_df <- num_df[num_df$number < 3, ]
 
# 輸出結果
r$> num_df
# A tibble: 2 x 1
  number
   <dbl>
1      1
2      2

 

  • Pipes通道%>% : 這個也是R裡面很特別的語法,用意是連結不同的函數,將各個函數的輸出應用到其他的函數上,使的好理解與閱讀,缺點是不好輸入,沒有快捷鍵實在是不好打,這部分Python就顯得人性化許多,一個tab就解決了。
# 利用pipes結合其他函數
num_df <- num_df %>%
    select(number) %>%
    filter(number > 3)

# 輸出結果
$> num_df # A tibble: 6 x 1 number <dbl> 1 4 2 5 3 6 4 7 5 8 6 9


  • 鎖定數據集欄位變量$ : 用於告訴R,現在要操作的是哪一個欄位變量,或是要將數值操作傳回哪一個欄位變量,有時候沒有指定時,會將整個數據集覆蓋掉,這個也是比較特別的用法。
# 創建一個tibble存入數值
num_df <- tibble(
    number = c(1,2,3,4,5,6,7,8,9),
    letter = c("a", "b", "c", "d", "e", "f", "g", "h", "j"))

# 使用$告訴R要修改哪個欄位的數值
num_df$letter <- recode(num_df$letter, "a" = "apple")

# 輸出結果
$> num_df # A tibble: 9 x 2 number letter <dbl> <chr> 1 1 apple 2 2 b 3 3 c 4 4 d 5 5 e 6 6 f 7 7 g 8 8 h 9 9 j

# 忘記指定欄位時結果
num_df <- recode(num_df$letter, "a" = "apple")

# 原本的number欄位被覆蓋掉了
r$> head(num_df) [1] "apple" "b" "c" "d" "e" "f"  

  • 移除 ! : 這個操作上也不是那麼的直覺,基本上刪除時會以row為單位,整行刪光光,所以覆蓋回去時反而不需要$,以下放上兩種操作方式
# 創建一個tibble存入數值
num_df <- tibble(
    number = c(1,2,-1),
    letter = c("a", "b", "c")
    )

r$> num_df # A tibble: 3 x 2 number letter <dbl> <chr> 1 1 a 2 2 b 3 -1 c

# 賦值左邊指定變量
num_df$number <- num_df[!(num_df$number < 0), ]

# 無法操作,因為行數會不相同
$> num_df$number <- num_df[!(num_df$number < 0), ] Error: Assigned data `num_df[!(num_df$number < 0), ]` must be compatible with existing data. x Existing data has 3 rows. x Assigned data has 2 rows. i Only vectors of size 1 are recycled.


# 賦值回整份數據
num_df <- num_df[!(num_df$number < 0), ]

# 輸出結果
r$> num_df # A tibble: 2 x 2 number letter <dbl> <chr> 1 1 a 2 2 b

  • 參數欄位變量 = : 各個函數內若有參數要修改,指定的方式就不是<-了,但若是逗點", ",意思就是不同的變量做個區隔
num_df <- tibble(
    number = c(1,2,-1),
    letter = c("a", "b", "c")
    )

  • ggplot 的函數連結 + : 整理完需要繪圖時R基本應該就是用ggplot了,ggplot的各個函數連結時用的是加號,一開始常常會跟<-或是%>%搞混
# 正常用法
num_df <- num_df %>%
    ggplot(mapping = aes(
        x = number,
        y = letter)) +
    geom_point()

# 錯誤用法
num_df <- num_df %>%
    ggplot(mapping = aes(
        x = number,
        y = letter)) %>%  
    geom_point()

r$> # 錯誤用法 num_df <- num_df %>% ggplot(mapping = aes( x = number, y = letter)) %>% geom_point() Error: `data` must be a data frame, or other object coercible by `

  • 載入Packages : Python的載入方式是import(),R則是library(),至於為什麼?這個可能要問R的原始作者George Ross Ihaka與Robert Clifford Gentleman兩位神人大大了😂
library(tidyverse)
library(lubridate)
library(dplyr)

  • 安裝Packages : 比Python多了個packages,不過也只是安裝一次,倒是沒有甚麼影響。
install.packages("dplyr")

其他文章

看看精選文章

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

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