Rで解析:データの重複削除と重複数のカウント方法

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

今回は、データの重複排除と重複数のカウント方法を紹介します。なお、近年のパソコンは能力が向上しているのでコードの最適化よりもいかにストレスがからだにかからない、からだにいいコードです。皆様の作業が楽になりますように。


スポンサーリンク

 必要なもの

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

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


紹介するコマンド

・  unique() : 重複削除

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


作業方法

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

14.05.04 エクセルデータ

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

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

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

###データの読み込み#####
selectABook <- paste(as.character(tkgetOpenFile(title = "&#12456;&#12463;&#12475;&#12523;&#12501;&#12449;&#12452;&#12523;&#12434;&#36984;&#25246;",
filetypes = '{"&#12456;&#12463;&#12475;&#12523;&#12501;&#12449;&#12452;&#12523;" {".xls" ".xlsx"}}')),&nbsp;sep = "", collapse =" ")
AnaData <- readWorksheet(loadWorkbook(selectABook), sheet = 1)
########

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

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

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

table(AnaData[, 1])

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

UniqueData <- unique(AnaData[,1]) #&#12513;&#12540;&#12523;&#12450;&#12489;&#12524;&#12473;&#12398;&#37325;&#35079;&#21066;&#38500;
FinalData <- NULL #&#20986;&#21147;&#12487;&#12540;&#12479;&#12398;&#26684;&#32013;&#29992;

for(n in 1:length(UniqueData)){
orderProduct <- subset(AnaData, AnaData[,1] == UniqueData[n])[,2] #&#36092;&#20837;&#21830;&#21697;&#12398;&#25277;&#20986;
orderProduct <- paste(orderProduct, collapse = ",") #&#36092;&#20837;&#21830;&#21697;&#12398;&#25972;&#29702;
OrderProducts <- cbind(UniqueData[n], orderProduct) #&#12513;&#12540;&#12523;&#12450;&#12489;&#12524;&#12473;&#12392;&#21830;&#21697;&#21517;&#12398;&#21512;&#20307;
FinalData <- rbind(FinalData, OrderProducts) #&#12487;&#12540;&#12479;&#12398;&#26684;&#32013;
}

colnames(FinalData) <- c("&#12513;&#12540;&#12523;&#12450;&#12489;&#12524;&#12473;", "&#36092;&#20837;&#21830;&#21697;") #&#12487;&#12540;&#12479;&#12398;&#25972;&#12360;
FinalData #&#12487;&#12540;&#12479;&#12398;&#34920;&#31034;
&#12513;&#12540;&#12523;&#12450;&#12489;&#12524;&#12473;            &#36092;&#20837;&#21830;&#21697;
[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"

後は、適時エクセルにデータを変換したりしています。エクセルへの変換はこの記事を参照ください。

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