内科のメモ帳

ずぼらな覚え書き

ユーザ用ツール

サイト用ツール


apps:r:func

頻用関数 {R}

パッケージを入れる

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関数を使う.頭文字が大文字なので注意!
idname
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)
)
col1col2
110
220
330
440

列を追加する (mutate)

  • 列を追加する(tidyverse)
TABLE %>% 
  mutate (<新しい列名> = <ベクトル>)
hyou %>% 
 mutate(
 col3 = col1+col2,
 col4 = col2-col1
 )
col1col2col3col4
110119
2202218
3303327
4404436
  • 列を追加する(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

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki