データを解析していると「一定範囲外のデータをすべて同じ値」で処理したくなる時があります。forやif関数などを組み合わせることで処理できますが、本パッケージを利用するとすぐに解決です。
パッケージバージョンは0.2.4。実行コマンドはR version 4.2.2で確認しています。
パッケージのインストール
下記、コマンドを実行してください。
#パッケージのインストール
install.packages("devtools")
devtools::install_github("derek-damron/transformr")
実行コマンド
詳細はコメント、パッケージのヘルプを確認してください。
#パッケージの読み込み
library("transformr")
###データ例の作成#####
TestData <- sample(1:500, 100, replace = TRUE)
#######
#データ内容の確認
summary(TestData)
Min. 1st Qu. Median Mean 3rd Qu. Max.
7.0 133.0 253.0 244.2 364.8 500.0
#データ範囲を指定した値で変換してトリミング
#実数で指定
TrimVTestData <- trim(TestData, lo = 200, hi = 300, method = "value")
summary(TrimVTestData)
Min. 1st Qu. Median Mean 3rd Qu. Max.
200.0 200.0 253.0 248.5 300.0 300.0
#パーセントで指定
TrimPTestData <- trim(TestData, lo = .2, hi = .4, method = "percentile")
summary(TrimPTestData)
Min. 1st Qu. Median Mean 3rd Qu. Max.
105.2 133.0 193.5 167.4 193.5 193.5
#データの結合と整形
PlotData <- data.frame(TestData, TrimVTestData, TrimPTestData)
library("tidyr")
PlotData <- gather(PlotData)
#図で確認
library("ggplot2")
GJPLot <- ggplot(aes(x = PlotData[, 1], y = PlotData[, 2]), data = PlotData)
GJPLot + geom_boxplot(fill = c("#4b61ba", "#a87963", "#deb7a0")) + geom_jitter() +
labs(x = "", y = "")
出力例
図で確認

少しでも、あなたの解析が楽になりますように!!