アクセス解析ツールR:データの重複削除と重複数のカウント方法


私はメルマガからのホームページへの流入や、グーグルアナリティクスのデータをまとめる時にRを使います。今回は、データの重複排除と重複数のカウント方法を紹介します。なお、近年のパソコンは能力が向上しているのでコードの最適化よりもいかにストレスがからだにかからない、からだにいいコードです。皆様の作業が楽になりますように。


 必要なもの

・  R(ダウンロード先はこの記事を参照ください。)

・  library XLConnect(ダウンロード先はこの記事を参照ください。)


紹介するコマンド

・  unique() : 重複削除

・  table():重複数のカウント


作業方法

下記のデータを例にしています。

14.05.04 エクセルデータ

Rを立ち上げ、コードを実行します。

まずは、データを読み込む。

###ライブラリの読み込み#####
library("XLConnect")
library("tcltk")
########

###データの読み込み#####
selectABook <- paste(as.character(tkgetOpenFile(title = &quot;エクセルファイルを選択&quot;,
filetypes = '{&quot;エクセルファイル&quot; {&quot;.xls&quot; &quot;.xlsx&quot;}}')), sep = &quot;&quot;, collapse =&quot; &quot;)
AnaData <- readWorksheet(loadWorkbook(selectABook), sheet = 1)
########
&#91;/code&#93;

<h3>例えばメールアドレスを重複せずに取得する。</h3>


unique(AnaData[, 1])
&quot;ABC@ABC.co.jp&quot; &quot;CDE@ABC.co.jp&quot; &quot;EFG@ABC.co.jp&quot; &quot;HIJ@ABC.co.jp&quot;

例えばメールアドレスの出現数を取得する。

table(AnaData[, 1])
ABC@ABC.co.jp CDE@ABC.co.jp EFG@ABC.co.jp HIJ@ABC.co.jp</pre>
6            1                      1                     1

そして、上記のコマンドを組み合わせるとメールアドレス別の購入商品をまとめたりする事ができます。

UniqueData <- unique(AnaData[,1]) #メールアドレスの重複削除 FinalData <- NULL #出力データの格納用 for(n in 1:length(UniqueData)){ orderProduct <- subset(AnaData, AnaData[,1] == UniqueData[n])[,2] #購入商品の抽出 orderProduct <- paste(orderProduct, collapse = ",") #購入商品の整理 OrderProducts <- cbind(UniqueData[n], orderProduct) #メールアドレスと商品名の合体 FinalData <- rbind(FinalData, OrderProducts) #データの格納 } colnames(FinalData) <- c("メールアドレス", "購入商品") #データの整え FinalData #データの表示 メールアドレス        購入商品 [1,] "ABC@ABC.co.jp"  "A,B,C,F,A,A" [2,] "CDE@ABC.co.jp"  "B" [3,] "EFG@ABC.co.jp"   "A" [4,] "HIJ@ABC.co.jp"    "D" [/code] 後は、適時エクセルにデータを変換したりしています。エクセルへの変換はこの記事を参照ください。

スポンサードリンク

関連コンテンツ


スポンサードリンク