こんにちは、樋口です。 書き込みありがとうございます。 以下のコードでは、同順1位の場合、同順のカテゴリ名を「・」でつないで両 方表示するようにしました。例えば「上」と「中」が同順1位であれば「上・ 中」のように表示されます。 #--------------------------------------------------------------------- co_name <- NULL co_value <- NULL co_chk <- NULL for (i in 1:n_words){ sort <- order( d[,i], decreasing=T ) same_v <- 0 cu_value <- d[,i][sort[1]] cu_name <- colnames(d)[sort[1]] n <- 2 while (cu_value == d[,i][sort[n]]){ cu_name <- paste(cu_name, colnames(d)[sort[n]], sep="・") same_v <- 1 n <- n + 1 } co_name <- c( co_name , cu_name ) co_value <- c( co_value, d[,i][sort[1]] ) co_chk <- c( co_chk , same_v ) } co <- data.frame( word <- colnames(d)[1:n_words], value <- co_name, jaccard <- co_value, check <- co_chk, stringsAsFactors=F ) colnames(co) <- c("word", "value", "jaccard", "check") print(co) #--------------------------------------------------------------------- 同順1位がそこまで多いというのは、少し不思議ですね。もしかすると、出現 頻度が非常に小さい著者まで分析に含まれているのかもしれません。もしくは、 非常に出現頻度が小さい分野が複数あるのでしょうか。 たとえば10回以上出現している著者のみ(分野のみ)といった形で、分析に含 める著者(分野)を絞れば、同順1位は減るかもしれません。 あるいは、少しアプローチを変えて、ベイズ学習による分類の行うのも一手か もしれません。手順は以下のようになります。 ※ベイズ学習では事前確率を使うので同順1位にはなりにくいはずですが、も しも同順1位になってしまった場合、なんら警告が出ないままに、片方の分野 が選択される可能性があります。同順1位の有無をチェックするためには、 「分類ログファイルの内容を確認」コマンドを使って、片っ端から確認するし かありません。 (1) 著者名を強制抽出し、分野名を外部変数として読み込みます (2) 「ツール」「文書」「ベイズ学習による分類」「外部変数から学習」と進 めます。「学習する外部変数」として分野名の変数を選び、「最小出現数」を 1にして、OKをクリックします。学習結果に名前を付けて保存します。 (3) 以下のような分析対象ファイルを新たなに準備します。1行に1人の著者名 が入っている形にします。 #--------------------------------------------------------------------- 著者名1 著者名2 著者名3 著者名4 #--------------------------------------------------------------------- (4) このファイルをKH Coderのプロジェクトとして登録し、著者名を強制抽出 して、前処理を行います。 (5) 「ツール」「文書」「ベイズ学習による分類」「学習結果を用いた自動分 類」とたどります。「学習結果ファイル」として(2)で保存したファイルを選 択肢、適当な「変数名」を指定して「OK」をクリックします。これによって1 行1行が(すなわちそれぞれの著者名)が、いずれかの分野に自動分類されま す。 (6) 分類結果を取り出すには、「ツール」「外部変数と見出し」「リスト」と たどります。(5)で名づけた変数を選択して、「出力」をクリックすると、各 行の分類結果を取り出すことができます。