搜尋感興趣的網誌

所有文章連結

顯示具有 Packages 標籤的文章。 顯示所有文章
顯示具有 Packages 標籤的文章。 顯示所有文章

2022年3月24日 星期四

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")

2022年3月22日 星期二

數據分析R包介紹 | Data Analyze R Packages Introduce

 


在數據分析的領域,Python與R都有不少的擁護者,Python的通用性高,可以做網頁、人工智慧、APP、數據分析、甚至影響處理等等,R則是比較侷限,但是R在統計、繪圖的部分畢竟比較擅長,有些語法也顯得簡單,小雷整理了會常用到的Packages內容,除了希望能分享幫助到正在學習的朋友,也讓自己不斷的溫習,介紹的內容若是有錯誤,還希望大大能提點改進。

 

以下是常用的Packages,簡單做點介紹,各分類的文章連結也會寫好後陸續放上來,不定期進行更新,有在學習R語言的朋友可以當作參考。

 

Tidyverse包內已經整合的有(當然也可以單獨import) :

1.      Dplyr : 數據操作包,plur的進階版,很重要且基本的數據操作包,包含了數據的處理、轉換函數,算是很常會到的Packages。

Dplyr文章連結 >> 請點我

 

2.      Readr : 數據集匯入包,tidyverse的核心包之一,用來匯入數據集,當然R的base包中也有同樣的功能。

 

3.      Tidyr : 數據清洗包,分析的準確,很大的程度取決於數據的乾淨程度,一點點的誤差都有可能導致分析的失準。

 

4.      Forcats : 因子操作包,數據整理時,有時會因為欄位的型態而不好操作、排序,因子factor的轉換與使用有時會遠比字符character來的容易。

Forcats文章連結 >> 請點我

 

5.      Tibble : 在創立、列印、子集的顯示與傳統數據框data.frame不同,在使用tidyverse時幾乎都會產生tibbles框架。

 

6.      Purrr : 專門處理函數與向量,可以使編寫的代碼具有表現力與易於編程。

 

7.      Stringr : 專門處理字符character的包,讓處理字符時可以變得容易許多。

Stringr文章連結 >> 請點我

 

8.      Ggplot2 : 最常使用的繪圖包,擁有美觀與強大的繪圖功能,也很好的結合編程與繪圖

 

Lubridate : 日期操作包,分析時常常會使用到日期的欄位與數值,透過lubridate可以輕鬆的進行操作與轉換。

 

Stats : 統計包,這也是使愛用者喜愛的原因吧,強大的統計功能,很簡單的就可以把相關的數值找出來。

 

Janitor : 檢查與清理包,除了檢查數據之外,也提供清洗數據的其他函數。


其他文章

看看精選文章

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

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