R logo

例えば作表の際、列名に「(N = 数字)」という情報をいれたくて、数値は計算式で出したい場合、

stringr::str_c()

文字列操作は Hadley氏作製の stringr パッケージで完結できる。

stringr の特徴
  • 処理速度が速い。
  • 関数が全て "str_" で始まる。
  • パイプ(%>%)で連鎖しやすい。
  • R標準にはない機能も色々追加されている。

stringr パッケージは tidyverse パッケージの中に入っているので、tidyverse をインストールしておけば使える。

install.packages(tidyverse)
library(tidyverse)

 

このstringrパッケージのstr_c() が R標準パッケージのpaste()(後述) に該当する。

使い方は、

str_c("文字列", 数式..., sep = "")

の様な感じ。

sep = "" で区切り(ハイフン、アンダースコア、カンマ、スペース、何もなし etc.)を指定できる。

colnames(df) <- c(
str_c("(N",sum(Data_AD$LATEStage_Dickson == 1, na.rm = TRUE),")", sep = "="),
str_c("(N",sum(Data_AD$LATEStage_Dickson == 2, na.rm = TRUE),")", sep = "="),
str_c("(N",sum(Data_AD$LATEStage_Dickson == 3, na.rm = TRUE),")", sep = "="),
str_c("(N",sum(Data_AD$LATEStage_Dickson == 4, na.rm = TRUE),")", sep = "="),
str_c("(N",sum(Data_AD$LATEStage_Dickson == 5, na.rm = TRUE),")", sep = "=")
)
r-paste-1

base::paste()

R標準パッケージにもpaste() が用意されている。

使い方は、

paste(文字列, 数式, 文字列,...)

のように繋いでいく。

colnames(df) <- c(
paste("(N=",sum(Data_AD$LATEStage_Dickson == 1, na.rm = TRUE),")"),
paste("(N=",sum(Data_AD$LATEStage_Dickson == 2, na.rm = TRUE),")"),
paste("(N=",sum(Data_AD$LATEStage_Dickson == 3, na.rm = TRUE),")"),
paste("(N=",sum(Data_AD$LATEStage_Dickson == 4, na.rm = TRUE),")"),
paste("(N=",sum(Data_AD$LATEStage_Dickson == 5, na.rm = TRUE),")") )
r-paste-1
にほんブログ村 子育てブログ ワーキングマザー育児へ