apps:r:func
頻用関数 {R}
- function
パッケージを入れる
install.packages("NAME") library("NAME")
- 最初は tidyverse パッケージから
- Excelファイルの読み込みは readxl パッケージ
基本
- working directoryのパスを取得する
getwd()
- ls function = 作成した変数 variable を全て呼び出す
ls()
- rm function = 全部消す
rm(list=ls())
- 文字列型 character データを numeric データに
as.numeric("5") #これで文字列の5を数字の5に変換する.1/2などの文字列は 0.5 と変換できない
as.character(5) #これで数字の5を文字列の "5" に変換する.
ベクトル作成
- combine の頭文字 c
- 文字列と数字が混ざっていると,全て文字列型に置き換えられてしまうため注意
- ベクトルは,Excelなどの表での「列」に相当するものとイメージする
- 行の先頭タイトル(たとえばID)を関数名にするとわかりやすい.ID 1〜5を格納すると以下
id <- c(1,2,3,4,5)
データフレーム作成
- 上記のベクトルを複数用意すれば「複数列」の表になる.それがデータフレーム.
data.frame(列1=a,列2=b,...) #a,b,...はいずれもベクトルデータ
hyou <- data.frame( id=c(1,2,3,4), name=c("阿部くん","馬場さん","近田くん","段田さん") )
View(hyou) # 上で書いたデータフレームを表示するには View関数を使う.頭文字が大文字なので注意!
id | name |
1 | 阿部くん |
2 | 馬場さん |
3 | 近田くん |
4 | 段田さん |
- data.frame関数の欠点として,全ての行・列を表示してしまうことがある
- 研究で使うようなまずまず大規模なデータを data.frame 形式で読み込むとかなり大変なことになる(スクロール地獄)
- このデメリットを克服したものが,tibble 形式
- 要:tibbleパッケージ ※tidyverse パッケージに含まれる
- readrパッケージにある関数でデータを読み込んだ場合,基本的には tibble 形式で Rに取り込まれる
tibble形式
as_tibble("変数")
- 上記にて date.frame 形式のものを tibble 形式に変換できる
計算
- 割り算の商とあまり
a %%2 # aを2で割った余り
a %/%2 # aを2で割った商
繰り返し関数rep
weekend <- rep( c(rep"weekday",5), "weekend", "weekend"), 4 #平日*5+週末+週末,というベクトルを4回繰り返す )
関数の作成
kansu1 <- function(<任意のargument>){ #<処理> return(<処理した結果>)}
tasizan <- function(x,y){ temp <- x+y return( temp ) }
データクリニーング
データチェック
#最初の行列を表示 head() #最後の行列を表示 tail()
表を作成する
hyou <- tibble( col1=c(1,2,3,4), col2=c(10,20,30,40) )
col1 | col2 |
1 | 10 |
2 | 20 |
3 | 30 |
4 | 40 |
列を追加する (mutate)
- 列を追加する(tidyverse)
TABLE %>% mutate (<新しい列名> = <ベクトル>)
hyou %>% mutate( col3 = col1+col2, col4 = col2-col1 )
col1 | col2 | col3 | col4 |
1 | 10 | 11 | 9 |
2 | 20 | 22 | 18 |
3 | 30 | 33 | 27 |
4 | 40 | 44 | 36 |
- 列を追加する(base)
hyou$new <- hyou$col1 + hyou$col2
列の名前を変える (rename)
#普通の rename 関数 rename (TABLE, NEW_COL_NAME = original_col_name) #パイプ関数を使う場合 TABLE %>% rename(NEW_COL_NAME = original_col_name)
列を選択する (select)
- 特定の表(TABLE)の列1,2,5,だけを抽出する
#普通の select 関数 select (TABLE, col1, coll2, col5) #パイプ関数を使う場合 tidyverse TABLE %>% select(col1,col2,col5) #baseでやる場合 TABLE[c("col1","col2","col5")]
- 特定の文字列を含む列だけ選択する
#ABC,abc(大文字・小文字区別しない)を含む文字列を引っ張ってくる TABLE %>% select(matches("ABC"))
- 特定の表(TABLE)の列を除外する
#TABLEの1列目を除外する select (TABLE, !col1) #TABLEの1列目を除外する(パイプ関数版) TABLE %>% select(!col1) #TABLEの1,2,5列目を除外する TABLE %>% select(!c(col1,col2,col5))
- 特定の列を前に持ってくる
#TABLEの5列目を一番前に持ってくる TABLE %>% select(col5, everything()) #TABLEの5列目を一番前に(relocate関数) TABLE %>% relocate(col5) #TABLEの5列目を3列目の前に(relocate関数) TABLE %>% relocate(col5, .before=col3) #TABLEの5列目を3列目の後に(relocate関数) TABLE %>% relocate(col5, .after=col3)
- 特定の列だけ引き出して名前も変える
#TABLEの1列目,3列目だけ持ってきて違う名前にする TABLE %>% select(RENAME_col1 = col1, RENAME_col3 = col3)
列を確認する (colnames)
#TABLEの列名一覧をベクトルとして取得する colnames(TABLE)
行を並び替える (arrange)
# 列1が昇順となるように並び替える arrange(TABLE,col1) #パイプ関数を使う場合 TABLE %>% arrange(col1) # 列1が降順となるように並び替える arrange(TABLE,desc(col1)) #パイプ関数を使う場合 TABLE %>% arrange(desc(col1)) # 列1を昇順とした上で,列2も昇順になるよう並び替える arrange(TABLE,col1,col2) #パイプ関数を使う場合 TABLE %>% arrange(col1,col2)
行をフィルターする(filter)
#1列目(col1)が 15以上の行のデータだけ抜き出す TABLE %>% filter(col1 => 15)
ざっくり外観をみる
GGally
install.packages("GGally") library(GGally) #行列データセットの外観を一目でチェック GGally::ggpairs(DATASET)
apps/r/func.txt · 最終更新: 2023/10/16 by admin