Rで解析:文字操作が楽々「stringr」パッケージ

Rの解析に役に立つ記事
スポンサーリンク

文字列操作と検索「grep」と置換「gsub」コマンドがあります。これらのコマンドだけでも十分な作業ができますが、念のため「stringr」パッケージを簡単に紹介したいと思います。

Rで解析:文字列操作と検索「grep」と置換「gsub」コマンドの紹介は以下の記事を参考にしてください。

パッケージバージョンは1.4.0。windows 10のR version 4.1.1で動作を確認しています。


スポンサーリンク

パッケージのインストール

下記コマンドを実行してください。

#パッケージのインストール
install.packages("stringr")

コマンドの紹介

下記コマンドを実行してください。詳細は各パッケージのヘルプを確認してください。

#パッケージの読み込み
library("stringr")
#データ例作成に必要なパッケージ
library("stringi")

#指定パターンから指定の長さで文字列を作成
#stringrパッケージのstri_rand_stringsコマンド
#生成数を指定:nオプション
#文字列の長さを指定:lengthオプション
#パターンを指定:patternオプション
#stri_rand_strings(n = 3, length = 4, pattern = "[a-zあ-ん]")
#[1] "るばGガ" "iニョあ" "tVヲっ"

###データ例の作成#####
set.seed(50)
n <- 50
TestData <- data.frame(paste0("Group", formatC(1:n, width = 2, flag = "0")),
                       matrix(stri_rand_strings(n = n^2, length = 4,
                              pattern = "[a-zA-Z]"), n, n))
colnames(TestData) <- c("Group", paste0("Word", formatC(1:n, width = 2, flag = "0")))
########

#&#25991;&#23383;&#21015;&#12398;&#32080;&#21512;:str_c&#12467;&#12510;&#12531;&#12489;
#&#20219;&#24847;&#12398;&#25991;&#23383;&#12391;&#32080;&#21512;:sep&#12458;&#12503;&#12471;&#12519;&#12531;
Test_join <- str_c(TestData$Group, TestData$Word02, sep = "_")
head(Test_join)
[1] "Group01_DgaX" "Group02_bJhO" "Group03_sWai" "Group04_GAvQ"
[5] "Group05_EbAs" "Group06_sGKU" 

#&#25991;&#23383;&#21015;&#12398;&#20998;&#21106;:str_split&#12467;&#12510;&#12531;&#12489;
#&#20219;&#24847;&#12398;&#25991;&#23383;&#12391;&#20998;&#21106;:pattern&#12458;&#12503;&#12471;&#12519;&#12531;
#&#34892;&#21015;&#12391;&#20986;&#21147;:simplify&#12458;&#12503;&#12471;&#12519;&#12531;:FALSE&#12391;list
Test_split <- str_split(string = Test_join,
                        pattern = "_",
                        simplify = "TRUE")
head(Test_split)
    [,1]      [,2]      
[1,] "Group01" "DgaX"
[2,] "Group02" "bJhO"
[3,] "Group03" "sWai"
[4,] "Group04" "GAvQ"
[5,] "Group05" "EbAs"
[6,] "Group06" "sGKU"

#&#29305;&#23450;&#25991;&#23383;&#12434;&#21547;&#12416;&#25991;&#23383;&#21015;&#12434;&#26908;&#32034;:str_count&#12467;&#12510;&#12531;&#12489;
Test_count <- str_count(Test_join, pattern = "a")
head(Test_count)
[1] 1 0 1 0 0 0
###&#22823;&#25991;&#23383;&#23567;&#25991;&#23383;&#38306;&#20418;&#12394;&#12367;&#26908;&#32034;#####
#&#12393;&#12398;&#12467;&#12510;&#12531;&#12489;&#12391;&#12418;&#36969;&#24540;&#12364;&#21487;&#33021;&#12391;&#12377;
#coll&#12467;&#12510;&#12531;&#12489;&#12434;&#21033;&#29992;&#12377;&#12427;,&#25991;&#23383;&#12467;&#12540;&#12489;&#12524;&#12505;&#12523;&#12391;&#12354;&#12428;&#12400;fixed&#12467;&#12510;&#12531;&#12489;
Coll_Test_count <- str_count(Test_join,
            pattern = coll(pattern = "a", ignore_case = TRUE))
head(Coll_Test_count)
[1] 1 0 1 1 1 0

#&#29305;&#23450;&#25991;&#23383;&#12434;&#21547;&#12416;&#25991;&#23383;&#21015;&#20869;&#12391;&#12398;&#20840;&#12390;&#12398;&#20301;&#32622;&#12434;&#26908;&#32034;:str_locate_all&#12467;&#12510;&#12531;&#12489;
#str_locate&#12467;&#12510;&#12531;&#12489;&#12418;&#12354;&#12426;&#12414;&#12377;
Locate_Test_count <- str_locate_all(Test_join,
            pattern = coll(pattern = "a", ignore_case = TRUE))
head(Coll_Test_count)
[[1]]
     start end
[1,]    11  11
[[2]]
start end
[[3]]
     start end
[1,]    11  11

#&#20301;&#32622;&#12434;&#30906;&#35469;&#12375;&#12394;&#12364;&#12425;&#25991;&#23383;&#21015;&#12434;&#25277;&#20986;:str_extract&#12467;&#12510;&#12531;&#12489;
#str_extract_all&#12467;&#12510;&#12531;&#12489;&#12418;&#12354;&#12426;&#12414;&#12377;
Extract_Test_count <- str_extract(Test_join,
             pattern = coll(pattern = "a", ignore_case = TRUE))
head(Extract_Test_count)
[1] "a" NA  "a" "A" "A" NA 

#&#25351;&#23450;&#12375;&#12383;&#25991;&#23383;&#12434;&#21547;&#12416;&#25991;&#23383;&#21015;&#12434;&#25277;&#20986;:str_subset&#12467;&#12510;&#12531;&#12489;
Subset_Test_count <- str_subset(Test_join,
                                pattern = coll(pattern = "a", ignore_case = TRUE))
head(Subset_Test_count)
[1] "Group01_DgaX" "Group03_sWai" "Group04_GAvQ" "Group05_EbAs" "Group14_Qagw"
[6] "Group19_LAOV"

#&#25991;&#23383;&#21015;&#12398;&#32622;&#25563;:str_replace&#12467;&#12510;&#12531;&#12489;
#str_replace_all&#12467;&#12510;&#12531;&#12489;&#12418;&#12354;&#12426;&#12414;&#12377;
#&#32622;&#12365;&#25563;&#12360;&#25991;&#23383;&#12398;&#25351;&#23450;:replacement&#12458;&#12503;&#12471;&#12519;&#12531;
Replace_Test_count <- str_replace_all(Test_join,
                                      pattern = coll(pattern = "a", ignore_case = TRUE),
                                      replacement = "c")
head(Replace_Test_count)
[1] "Group01_DgcX" "Group02_bJhO" "Group03_sWci" "Group04_GcvQ" "Group05_Ebcs" "Group06_sGKU"

少しでも、あなたのウェブや実験の解析が楽になりますように!!

タイトルとURLをコピーしました