データ名で数字の桁数が揃っていないために、sortコマンド等で期待した通りに並ばなかった経験はないでしょうか。意外とデータ名の修正は面倒です。そんな手間を軽減するパッケージの紹介です。
パッケージバージョンは1.4.2。実行コマンドはwindows 11のR version 4.1.2で確認しています。
パッケージのインストール
下記コマンドを実行してください。
#パッケージのインストール install.packages("strex")
コマンドの紹介
詳細はパッケージのヘルプを確認してください 。
#パッケージの読み込み library("strex") ###データ例の作成##### set.seed(1234) TestData <- sample(sample(paste0("Group", 1:300, "_NO", 1:50), 10, replace = TRUE)) #確認 TestData [1] "Group3_NO3" "Group259_NO9" "Group183_NO33" "Group155_NO5" "Group187_NO37" "Group200_NO50" [7] "Group193_NO43" "Group35_NO35" "Group70_NO20" "Group188_NO38" ######## #基本のsortコマンドで並び替え #桁数が異なるので小さい順から並ばない sort(TestData) [1] "Group155_NO5" "Group183_NO33" "Group187_NO37" "Group188_NO38" "Group193_NO43" "Group200_NO50" [7] "Group259_NO9" "Group3_NO3" "Group35_NO35" "Group70_NO20" #桁数を揃える:str_alphord_numsコマンド ResultData <- str_alphord_nums(TestData) sort(ResultData) [1] "Group003_NO03" "Group035_NO35" "Group070_NO20" "Group155_NO05" "Group183_NO33" "Group187_NO37" [7] "Group188_NO38" "Group193_NO43" "Group200_NO50" "Group259_NO09" #文字列に含まれる数字を取得:str_extract_numbersコマンド str_extract_numbers(TestData) [[1]] [1] 3 3 [[2]] [1] 259 9 #以下省略 #指定文字が初出現より前方文字列を取得:str_before_firstコマンド #後方はstr_after_firstコマンド str_before_first(TestData, pattern = "3") [1] "Group" NA "Group18" NA "Group187_NO" NA "Group19" [8] "Group" NA "Group188_NO" #指定文字の最後尾より前方文字列を取得:str_before_lastコマンド #後方はstr_after_lastコマンド str_before_last(TestData, pattern = "3") [1] "Group3_NO" NA "Group183_NO3" NA "Group187_NO" NA "Group193_NO4" [8] "Group35_NO" NA "Group188_NO" #指定出現数より前方文字列を取得:str_before_nthコマンド #後方はstr_after_nthコマンド str_before_nth(TestData, pattern = "5", n = 2) [1] NA NA NA "Group15" NA NA NA [8] "Group35_NO3" NA NA
少しでも、あなたの解析が楽になりますように!!