Rでウェブ解析:データの抽出について

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

もはや、ウェブ解析にはなくてはならないソフトになりつつあるRですが、ネット上の情報は応用が多くなかなか基本的な情報を見つけるのは困難です。今回は解析の際には、絶対必要なデータフレームから必要なデータを抽出する例を紹介します。


スポンサーリンク

解析の前準備

・ライブラリ XLConnectの導入
 https://www.karada-good.net/analyticsr/r-3/

想定データは以下の画像を参照してください。

紹介するRのコード

コードはエクセルデータを読み込み、行名に含まれる単語で必要な行を抽出し、そのデータをエクセルで出力する内容となっています。解析する際に入力する必要がある箇所は下記の通りです。*紹介するコード内で表示されている内容です。適時変更ください。

  • fileName <- “テスト” #出力ファイル名
  • Gtexy <-  c(“2w”) #抽出する単語の設定
  • ADRange_SE <- 1:2 #残したい行の設定、例えば被験者番号など
###&#12521;&#12452;&#12502;&#12521;&#12522;&#12540;&#12398;&#35501;&#12415;&#36796;&#12415;#####
library("XLConnect")
library("tcltk")
########

###&#12487;&#12540;&#12479;&#12398;&#35501;&#12415;&#36796;&#12415;#####
###xlxs&#12487;&#12540;&#12479;#####
###&#35299;&#26512;&#12487;&#12540;&#12479;#####
sheetSelect <- 1#&#35501;&#12415;&#36796;&#12416;&#12471;&#12540;&#12488;&#30058;&#21495;&#12434;&#20837;&#21147;
selectABook <- paste(as.character(tkgetOpenFile(title = "&#35430;&#39443;&#32080;&#26524;xlsx&#12501;&#12449;&#12452;&#12523;&#12434;&#36984;&#25246;",filetypes = '{"xlsx&#12501;&#12449;&#12452;&#12523;" {".xlsx"}}',initialfile = "*.xlsx")), sep = "", collapse =" ")
MasterAnaData <- loadWorkbook(selectABook)
AnaData <- readWorksheet(MasterAnaData, sheet = sheetSelect)

###&#21021;&#26399;Dir&#12398;&#35373;&#23450;#####
FarstDir <- as.data.frame(strsplit(selectABook, "/")) #&#21021;&#26399;dirpath&#12398;&#21462;&#24471;&#28310;&#20633;
FarstDir <- paste(FarstDir[1:(nrow(FarstDir)-1),], sep = " ", collapse = "/" ) #&#21021;&#26399;dirpath&#12398;&#21462;&#24471;
setwd(FarstDir) #&#21021;&#26399;dir&#35373;&#23450;
########

###&#35299;&#26512;&#12377;&#12427;&#38555;&#12395;&#20837;&#21147;&#12377;&#12427;&#20491;&#25152;#####
fileName <- "&#12486;&#12473;&#12488;" #&#20986;&#21147;&#12501;&#12449;&#12452;&#12523;&#21517;
Gtext <- c("2w") #&#25277;&#20986;&#12377;&#12427;&#21336;&#35486;&#12398;&#35373;&#23450;
ADRange_SE <- 1:2 #&#27531;&#12375;&#12383;&#12356;&#34892;&#12398;&#35373;&#23450;&#12290;&#20363;&#12360;&#12400;&#34987;&#39443;&#32773;&#30058;&#21495;&#12394;&#12393;
########

###&#35299;&#26512;&#12467;&#12510;&#12531;&#12489;#####

###Data&#12398;&#25277;&#20986;#####
for ( n in 1:length(Gtext)){
  include_with_text <- grep(Gtext[n],colnames(AnaData),value = TRUE) #&#34892;&#25277;&#20986;&#12398;&#28310;&#20633;
  SelectDF <- subset(AnaData,select = include_with_text) #&#34892;&#12398;&#25277;&#20986;
  ExMaster <- cbind(AnaData[,ADRange_SE],SelectDF) #&#25277;&#20986;&#12487;&#12540;&#12479;&#12398;&#32080;&#21512;
  writeWorksheetToFile(paste(format(Sys.time(), "%y.%m.%d")," ", fileName, ".xlsx", sep = ""), data= ExMaster, sheet= Gtext[n])
  assign(paste("AnaData_", n, sep = ""), ExMaster, envir = .GlobalEnv) #"AnaData_" + Gtext&#12391;&#22793;&#25968;&#12434;&#20316;&#25104;&#12375;&#24773;&#22577;&#12434;&#26684;&#32013;
}
########

###&#32113;&#21512;&#12487;&#12540;&#12479;&#12398;&#20316;&#25104;#####
if (1 &lt; length(Gtext)){
  #&#25277;&#20986;&#12487;&#12540;&#12479;&#12364;2&#20197;&#19978;&#12398;&#22580;&#21512;
  NewFile <- AnaData[,ADRange_SE]
  for ( n in (ADRange_SE[length(Gtext)] + 1):ncol(AnaData_1)) {
    for (o in 1:length(Gtext)){
      NAD <- eval(parse(text = paste("AnaData_",o, sep = "")))[,n]
      NAD <- as.data.frame(NAD)
      colnames(NAD) <- iconv(colnames(eval(parse(text = paste("AnaData_",o, sep = "")))[n]),"cp932","UTF-8")
      NewFile <- cbind(NewFile,NAD)
      
    }
  }
  colnames(NewFile) <- iconv(colnames(NewFile),"cp932","UTF-8")
  writeWorksheetToFile(paste(format(Sys.time(), "%y.%m.%d")," ", fileName, ".xlsx", sep = ""),data=NewFile,sheet = "&#32113;&#21512;&#12487;&#12540;&#12479;" ) #&#26032;&#12487;&#12540;&#12479;&#12501;&#12524;&#12540;&#12512;&#12398;&#26360;&#12365;&#20986;&#12375;
  
}else{
  #&#25277;&#20986;&#12487;&#12540;&#12479;&#12364;1&#12398;&#22580;&#21512;&#20309;&#12418;&#12375;&#12394;&#12356;
}
########

出力例

・抽出する単語をGtexy <-  c(“X”)に設定した出力

抽出の基本コマンドさえ押さえておけば、発展的に利用できると思います。

・抽出する単語をGtexy <-  c(“2w”)に設定した出力


皆様のウェブ解析にお役に立ちますように。

もし、不明点がありましたらこちらからお問い合わせください。

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