TAG

Rデータ整理

Rで使う正規表現の色々

Rでよく使う正規表現のパターンを、カテゴリー別に整理してみた。 Rで使用する正規表現いろいろ 文字の検索・位置指定に関するパターン パターン 説明 例 ^ 文字列の先頭を指定 ^Hello は “Hello World” に一致 $ 文字列の末尾を指定 World$ は “Hello World” に一致 \\b 単語の境界 (word bounda […]

【Rデータ整理】特定の文字を含む行を抽出:grepl()

文字列に特定の文字が含まれている行を抽出したい場合、grepl()を使うと便利。 grepl()の特徴 grepl()は、文字列に特定のパターンが含まれるかどうかをTRUE/FALSEで返す。 データフレームの行抽出の際に便利。 特定の文字を含む行を抽出:grepl() データフレームの作成 以下のようなデータフレームを作ってみる。 # サンプルデータフレーム df <- data.fram […]

【Rデータ整理】マッチするかどうかを返す:str_detect/grepl

特定の条件にマッチするかどうかを判定する関数には、str_detect() と grepl()を使うことができる。 str_detect() は stringr パッケージの関数で、grepl() はRの標準パッケージ(base)。 どちらとも正規表現が使える。 シンプルな検出なら grepl() でもよいけれど、str_detect()の方が汎用性が広いので、こちらをよく使っている。 また、st […]

【Rデータ整理】文字列のマッチする箇所の数を返す:str_count

str_count(string, pattern) は、文字列内に正規表現pattern がいくつ出現するかをカウントする関数。 この関数は、stringr パッケージに含まれているので、まずは、library(stringr) でパッケージを読み込む。 install.packages("stringr") library(stringr) str_count() str_count()の基本 […]

【Rデータ整理】文字列を繰り返し複製する:str_dup/strrep

文字列を繰り返し複製する時には、str_dup() と strrep()などを使う。 str_dup():stringrパッケージの関数で、ベクトル化が簡単、使い方が直感的。 strrep():base R (標準関数)の関数で、追加パッケージのインストールは不要。   類似の関数にrep()があるけど、これは、ベクトル全体を繰り返すのに使う。str_dup()とstrrep()は文字列 […]

【Rデータ整理】文字列のフォーマットを変更する:str_to_upper/str_to_lower/str_to_title/str_to_sentence

文字列のフォーマットを変更する時には、stringrパッケージに含まれているstr_to_upper(), str_to_lower(), str_to_title(), str_to_sentence()等を使う。 文字列のフォーマットを変更する関数 大文字にしたい → str_to_upper() 小文字にしたい → str_to_lower() タイトルケースにしたい → str_to_ti […]

【Rデータ整理】文字列vector要素を繋げて1つの文字列にする:str_flatten/paste0

あるvectorの要素を繋げて一つの文字列にしたい場合、str_flatten()やpaste0()を使う。 どちらも文字列を結合(連結)するための関数だけれど、使い方や挙動にいくつかの違いがある。 str_flatten() str_flatten() は、stringrパッケージの関数で、ベクトル内の要素を1つの文字列に結合するために使う。 ベクトル内の各要素を、collapseの区切り文字で […]

【Rデータ整理】文字列の抽出や置換:str_sub/substr

文字列を部分的に抽出したり、置換したりするときには、R標準パッケージ(base)のsubstr()、もしくは stringrパッケージならstr_sub()を使う。 substr()とstr_sub()の違い substr() は、Rの標準関数で、インストール不要でどこでも使える。 str_sub() は、stringrパッケージの関数で、可読性が高く、機能が充実。   実際には、以下の […]

【Rデータ整理】文字列の長さを数える:str_length/(nchar)

文字列の中の文字数をカウントする方法としては、R標準パッケージ(base)に含まれるnchar()関数や、stringrパッケージのstr_length()関数等を使う。 ここでは主にstr_length()関数についてまとめておく。 str_length() str_length() の基本構造 str_length(string) 引数 string: 文字列または文字ベクトル。str_len […]

【Rデータ整理】データフレームの結合:dplyr::join

2つのデータフレームを結合するときには、dplyr::join()関数を使う。 join()関数は、dplyrパッケージの関数なので、まずはdplyrパッケージをインストールして読み込む必要がある。 install.packages("dplyr") library(dplyr) ただし、join()という関数自体はdplyrには存在せず、inner_join()、left_join()、righ […]

【Rデータ整理】rownames()の使い方色々

Rのrownames()関数は、データフレームや行列(matrix)の行名(row names)を取得または設定するための関数。 基本的な使い方 行名を取得する rownames(データフレームまたは行列) 例: df <- data.frame(A=1:3, B=c("X", "Y" , "Z" )) rownames(df) # 行名を取得 output [1] "1" "2" "3" […]

R標準パッケージ(base)とstringrパッケージはどちらが速いのか?

前回、R標準パッケージ(base)とstringrパッケージの比較をしてみて、「処理速度は、場合によってはbase、場合によってはstringrの方が速い」ということがわかった。 で、具体的にどのときにbase、どのときにstringrが速いのか、調べてみた。 処理速度に関する違い stringr の方が速い場合 ベクトル化された処理が可能なため、stringrの方が速くなることがある。 一貫した […]

【Rデータ整理】列の抽出:[ ]を使う

[ ] (square brackets)を使って、各要素にアクセスする方法は、下記参照。 この基本を使って、データフレームの列を抽出する。 今回は、下記データ(Data)を使用。 > print(Data) ID Cohort Sex Age ADNC LBDSubtype 1 149 LBD M 83 Low BP 2 634 AD M 78 High DN 3 632 AD F 75 Hig […]

【Rデータ整理】行や列の抽出:[]を使う

[ ] (square brackets)を使って、各要素にアクセスする方法は、下記参照。 この基本を使って、データフレームの行や列を抽出する。 今回は、下記データ(Data)を使用。 > print(Data) ID Cohort Sex Age ADNC LBDSubtype 1 149 LBD M 83 Low BP 2 634 AD M 78 High DN 3 632 AD F 75 H […]

【Rデータ整理】R標準パッケージ(base)とstringrパッケージの比較

Rで文字列操作を行う際に、標準パッケージ(baseパッケージ)やstringrパッケージを使っていることが多いと思う。 私の周囲にはstringrを好む人が多いけれども、実際、どちらを使った方がよいのか、調べてみた。 R標準パッケージ、stringrパッケージの比較 標準パッケージ (base R) メリット 追加インストールが不要:どの環境でもすぐに使用可能。 小規模データでは、実行速度が速い: […]

【Rデータ整理】1列目を行名に指定する:rownames

例えば、下記データフレームを作る。 # データフレームを作成 df <- data.frame( x = c("A", "B", "C"), y = c(1, 3, 5), z = c("Apple", "Banana", "Cherry") ) # データフレームを表示 print(df) output > print(df) x y z 1 A 1 Apple 2 B 3 Bana […]

【Rデータ整理】データの中身(構造)を確認する:str

データをインポートしたらまず始めにする作業。 今回は、同じ階層にある”my_Data”というエクセルファイルをインポート library(readxl) Data_C <- readxl::read_xlsx("../my_Data.xlsx")   str()でデータの中身を確認する。 str(Data_C) output tibble [1,052 × […]

【Rデータ整理】行の並び替え:arrange/order/sort

下記のようなデータフレーム(df)があり、行を昇順or降順で並べ替えたい時。 私が使いやすいと思う順で arrange() , order , sort() の使い方を書き留めておく。 dplyr::arrange() 関数 arrange() はdplyrのパッケージの中に入っている。 install.packages("dplyr") library(dplyr) 昇順で並べ替え 方法は、 a […]

【Rデータ整理】重複する列を削除:distinct

下記のようなデータがあって、 “Deceased” が “True” と “False” と入力されている症例がそれぞれどれくらいずつあるか count(group_by()) で求めると、 Dat1 <- read_xlsx("./Data/test.xlsx") %>% rename(OldestCDR = ' […]

【Rデータ整理】特定の条件を満たす行数をカウント

例えば、下記のようなデータがあって、 “Deceased” が “True” と “False” と入力されている症例がそれぞれどれくらいずつあるか知りたい時。 count(group_by()) で求める。 Dat1 <- read_xlsx("./Data/test.xlsx") %>% rename(Olde […]

【Rデータ整理】クロス集計表

カテゴリデータの集計表⇔データフレームの切り替え。 クロス集計表 例えば、 運動あり 運動なし 認知症あり 10 15 認知症なし 20 5 のようなデータの集計表を作る時。 基本は行列で作る。 行列(matrix)で作る場合 行列で作る場合は下記。 # クロス集計表を作る x < matrix(c(10, 15, 20, 5), byrow=TRUE, ncol=2) dimnames(x […]

【Rデータ整理】tidy data に変換する

↑ これは見やすいけど、Rで計算する場合は tidy data じゃないのでちょっと困る。 これを、Rに取り込んで、tidy data に変換する方法。 tidy data と messy data については、多くのサイトで詳しく紹介されているので、ここでは割愛。 データの取り込み まずは、もらった “Fig044_BlMSA03-2dHipp.xlsx” という名前の […]

【Rデータ整理】行方向の平均値を出して任意の列に適応

列A、列B、列C…の各行毎に平均値を出して、それぞれ新しい列に結果を追加する方法3つ。 個人の練習も兼ねて前後の工程も記載しているので、あしからず。 事前準備 データの取り込み 人からもらった、とあるデータを取り込む。 Dat1 <- read.csv("./Data/Fig055.csv", header=TRUE) 結果は下記。 データのチェック 取り込んだデータの5-7列に […]

【Rデータ整理】欠損値(NA)の取り扱い④:群の中央値で補完する

NAの取り扱いシリーズ第4段。   今回は、他のデータから推測して補完する方法。 よく使われるのは、中央値(median)で補完する方法。 場合によっては平均値(mean)でもいいけど、中央値の方が外れ値の影響を受けにくいので、中央値の方が好まれる。 群の中央値で補完 (1) 例えば下記のようなデータフレーム(Dat)で、”Employees” のデータが2箇所欠 […]

【Rデータ整理】欠損値(NA)の取り扱い③:他のデータから予測し補完する

NAの取り扱いシリーズ第3段。   今回は、他のデータから予測できる場合にその情報を使って補完する方法。 他のデータを使って補完 例えば下記のようなデータフレームがあった場合、 “State” が<NA>になっているけど、隣の “City” がわかっていれば100%推測可能。 New Yorkはニューヨーク州(NY)だし、San […]

【Rデータ整理】NAの取り扱い方①:NA/NA以外のデータの抽出方法

データ整理をしていると、データが抜けていて欠損値になっている事がある。 この時の対処方法いろいろ。 前処理:空欄を NA に置き換えてデータをインポートする 例えば、下記のようなデータがあって、いくつか空欄がある。 これをRに取り込むと、 Dat <- read.csv("Data.csv") 空欄部分は時々空欄のまま、時々”NA”として認識される。   こ […]

【Rデータ整理】列の順番を並び替える:select

データフレームの列の順番を並び替える時は、列選択で使用する dplyr::select を使う。 例えば、下記の様なデータフレーム(データ名: Dat1)があって、 これを左から 「Sex -> Genotype -> Region -> Area -> NFT -> FN -> それ以外の列」 とゆーふーに並べ変えたい場合、 dplyr::select(Dat […]

【Rデータ整理】ちょっとした集計:dplyr::summarise

データフレーム内の合計や平均値などを求める時、Rでは「aggregate関数」が用意されているけど、比較的作業時間がかかるため、「dplyr::summarise」の方が良さげ。 ちょっとした集計:dplyr::summarise 全体での平均値を出す場合 例えば、下記テーブル “Data” の “FN” と “NFT” の列 […]

【Rデータ整理】列の追加:mutate

Rで列を追加する時は、 dplyr::mutate() を使っている。 mutate(列A+列B) のように計算式の結果を入れられるので便利だけど、文字列を入れる時はこんな感じ ▼ 例:Data というデータフレーム内で、 Age が “Young” or “Aged” Sex が “Male” or “Femal […]