CATEGORY

R

【Rで作図】x軸の順番を変更

下記のようにグラフを作った。 # bar graphs factor(Data_NFT_sum$Region, levels=c("Ipsi-Hipp", "Ipsi-Ctx" , "Cont-Hipp" , "Cont-Ctx" )) Data_NFT_sum %>% ggplot(aes(x = Sex, y = mean_NFT, fill = Group)) + geom_col(posi […]

【Rで作図】エラーバーを追加する

とある棒グラフを作成。 このグラフにエラーバーを付けたい場合、 geom_errorbar() を追加する。 エラーバーをつける 標準偏差(standard deviation, SD) SDは、 dplyr::summarise(新規作成列名 = sd(参照データの列)) で求める。 dplyr::summarise(mean = mean(Data), sd = sd(Data)) で、このS […]

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

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

【Rで作図】ggplot の基本概念

ggplot (ggplot2) では色々なグラフがかけるけど、基本概念は「レイヤー構造」で作る、という事。 イメージは photoshop や illustrator のレイヤーと似てる。   ggplot() でグラフ作りを始め、 aes() でx, y 軸などを決定し、 その上に追加要素としてレイヤーを重ねていくイメージ。   できたグラフは ggsave() で出力する […]

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

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

【RStudio】environment 内のオブジェクトを一掃する

RStudioでは、実行したオブジェクト(ベクトル、リスト、データフレームなど)はそのまま “environment” の中に残り、再利用することができる。 Emvironment に残っているオブジェクトの確認方法 この environment に残っているオブジェクトは、そのオブジェクトを environment 内でクリックするか、 ls() で確認できる。 &nbs […]

【Rで統計】Kruskal.Wallis検定

前回、ノンパラメトリックの2群検定の方法を書き留めておいたけど、 「よく考えたら、2群じゃなくて、2群x3群の6群でみなきゃじゃん。」 とゆーことに気づき、 多重比較のデータを追加した。 各グループが正規分布じゃないことは確認済みなので、今回は Kruskal-Wallis test(クラスカル・ウォリス検定)を選択。 Kruskal-Wallis test:kruskal.test() 比較グル […]

【Rで統計】Wilcoxonの順位和検定

あるデータのリバイスで、患者さんが最後に認知機能検査を受けた時期から亡くなるまでの期間が解析グループで差があるんじゃないか、とレビューアーから指摘された。 なので、その期間が各群で差がないことを示す検定結果をつける事に。 対応のない2群比較の場合は、 正規分布で等分散 → Student t-test(スチューデントのt検定、パラメトリック) 正規分布で等分散/不等分散両方OK → Welchi& […]

【Rで作図】ヒストグラム

あるデータのリバイスで、患者さんが最後に認知機能検査を受けた時期から亡くなるまでの期間が解析グループで差があるんじゃないか、とレビューアーから指摘された。 なので、その期間が各群で差がないことを示す検定結果をつける事に。 対応のない2群比較の場合は、 正規分布で等分散 → Student t-test(スチューデントのt検定、パラメトリック) 正規分布で等分散/不等分散両方OK → Welchi& […]

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

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

【RStudio】任意の単語etc.を全選択(VSCodeの Ctrl+L, Ctrl+D の代わりになるショートカットキーは?)

R Studio を使っていてちょっと不便だなと思ったのが、VS Code で多用している Ctrl + Shift + L (カーソル上と同じ単語etc. を全選択) Ctrl + Shift + D (カーソル上と同じ単語etc. を一つずつ選択) と同じショートカット機能がないことです。 この機能に使い慣れている私にとってはかなり困る事象なんですが、普段から R Studio を使っている人 […]

【Rで作図】facet毎に色を変える

認知機能の変化を、LBD, AD, LBD+AD グループ毎に、LATE(+)とLATE(-)で分けて示したいと思い、下記のようにグラフを作製。 ```{r fig.width=6} filter(Data, complete.cases(LATE)) %>% ggplot(aes(x=MMSEtoDeath, y=MMSETotal)) + geom_line(aes(group = IN […]

【Rで統計】回帰分析で参照グループを指定する

あるデータで線形混合モデルを使っていたときの話。 R の場合、参照グループは一番最初に分類されているグループと決められています。 例えば、 Group = factor(NA, levels = c("LBD-LATE(-)", "LBD-LATE(+)", "AD-LATE(-)", "AD-LATE(+)", "LBDAD-LATE(-)", "LBDAD-LATE(+)")) と論理型のレベ […]

【Rトラブルシュート】invalid factor level, NA generated

あるデータフレームに論理型(factor)の列を追加しようとして、下記のように作成した。 Data <- %&gt;% mutate(Group = factor(NA, levels = c("LBD-LATE(-)", "LBD-LATE(+)", "AD-LATE(-)", "AD-LATE(+)", "LBDAD-LATE(-)", "LBDAD-LATE(+)")) そして […]

【Rデータ整理】文字列の追加:mutate/transform

データフレームに列を追加する時の方法2つ。 dplyr::mutate() 普段は dplyr パッケージの dplyr::mutate() を使っている。 文字列は ” ” で括って追加する。 mutate(列名 = c("文字列1", "文字列2",....), データフレーム名) base::transform() Rの標準パッケージだと、 transform() を […]

【Rデータ整理】文字列の結合:str_c/paste/paste0

文字列を繋げるときには、paste(), paste0(), str_c()などを使う。 paste()とpaste0()は、Rの標準パッケージ(base)。 str_c()は、stringrパッケージの関数。 baseとstringrの違いの詳細は、下記参照。 以下、それぞれの使い方と、使用例、ポイントの比較等のまとめ。 paste() paste()は、文字列を結合する最も基本的な関数。スペー […]

【Rデータ整理】文字列の中に数式を入れたい場合:str_c/paste

例えば作表の際、列名に「(N = 数字)」という情報をいれたくて、数値は計算式で出したい場合、 stringr::str_c() 文字列操作はstringr パッケージで。 stringr の特徴 処理速度が速い。 関数が全て “str_” で始まる。 パイプ(%>%)で連鎖しやすい。 R標準にはない機能も色々追加されている。 stringr パッケージは tidyv […]

【Rデータ整理】NAを無視して計算する:na.rm = TRUE

Rにはベクトル専用の関数が多く用意されている。 例えば、 sum() :合計を求める mean() :平均値を求める median() :中央値を求める etc.   この時注意したいのが、データフレーム内に「NA」があると、計算結果が全て「NA」になってしまう。 この現象を回避するため、 「ベクトルに含まれている NA を無視する」 という指示を記載しておくと良い。 na.rm = T […]

【Rデータ整理】小数点以下を0.00とかに揃えたい場合

R で小数点第○○位まで出したい、というときは、Excel でもおなじみの Round 関数が使える。 round(データ, 桁数) round(0.12345, 3) output 0.123 ただこれだと、小数点以下の最後が 0 だった場合、0 より手前までしか表示されない。 round(0.12000, 3) output 0.12   これを、”0.120″ […]

【Rデータ整理】スコア “1+, 2+…” を数値 “1, 2…” に変換し、データ型を数値型に変更

相変わらず R でデータ整理中。 今回は、データベースに記載されている 1+, 2+ などのスコアを数値 1, 2… に変換し、データ型を数値型に変更する方法。 データベースから落としてきたときは、下記のようになっている。 これをそのまま R に取り込むと、文字列として認識される。 全ての文字列を数値化し、中央値とか出しておきたい。 データフレーム内の特定の文字列全てを数値に変換 まず […]

【Rベーシック】パイプ演算子:%>%

便利なパイプ演算子 %>% ……の覚書。 パイプ演算子とは パイプ演算子は、左辺のオブジェクトを右辺の関数に入れる機能を持つ演算子。 %>% %>%はtidyverseに含まれているパイプ演算子。%>%の左にあるデータを右の関数の第一引数に渡す役割を担う。 |> |>はR 4.1.0以降で備わっているパイプ演算子。   ・ ・ ・   今回は […]

【Rで作図】EPSファイルやsvgファイルで出力

R は色々なグラフィックスが作れて嬉しくなる。 作成した図表をそのまま R Markdown で出力できるのも魅力の一つだが、場合によっては、別のソフトで編集したいときも。   私の場合、Figures 等を作るときの最終的な整形は illustrator を使っている。 この時、R のグラフを EPS ファイルでの出力が必須。 後の編集が断然しやすい。 EPS ファイルで出力する方法: […]

【Rで作表】tableoneで全てのカテゴリを表示する方法

医学臨床系論文の Table 1. は、たいてい “Patient Demographics”… その “Table 1” を作るために非常に便利な R パッケージ: tableone。   基本的な使い方は、下記参照 ▼   今回はちょっと躓いたところと、その解決法を書き留めておく。 tableone を使う時に躓いた事とその解 […]

【Rデータ整理】列名とデータ型の変換

R にデータを取り込んで、そこから最初に行う作業の備忘録。 データのインポート 私は、データベースからエクセル (.xlsx) でデータを取得し、それを R に取り込む場合が多い。 エクセルの取り込みは、 readxl::read_xlsx(ファイル名.xlsx) で行う。 そのままファイル名を指定:同じフォルダ内にデータがある場合 R ディレクトリと同じフォルダにデータがある場合は、そのままファ […]

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

最近リバイスが返ってきて、データ整理に追われ中…… n数を増やす目的等で他から持ってきたデータを結合させた時の備忘録。 dplyr::join dplyr パッケージの join 関数を使う。 join 関数は4種類。 full_join inner_join left_join right_join この中で一番多く使っているのは left_join と full_join right_join […]

【Rトラブルシュート】”R code execution error”

ある時、R でコードを打つ度に、”R code execution error” という warning sign に遭遇するようになりました。 普通に仕事は進められるけど、警告の度に作業がストップされるので、ちょっと annoying… 対処法について調べると、下記に答えが。     R の再起動 (d.g. .rs.restartR()) […]

【Rトラブルシュート】unused argument

この間まで普通に動いていた下記コードが、突然エラー表示に。 Data_D <- readxl::read_xlsx("sample", guess_max=40000, range="A1:AK755") %>% rename(LATE = "TDP") output Error in rename(., LATE = "TDP") : unused argument (LATE = […]