今回は、データの重複排除と重複数のカウント方法を紹介します。なお、近年のパソコンは能力が向上しているのでコードの最適化よりもいかにストレスがからだにかからない、からだにいいコードです。皆様の作業が楽になりますように。
必要なもの
・ R(ダウンロード先はこの記事を参照ください。)
・ library XLConnect(ダウンロード先はこの記事を参照ください。)
紹介するコマンド
・ unique() : 重複削除
・ table():重複数のカウント
作業方法
下記のデータを例にしています。
Rを立ち上げ、コードを実行します。
まずは、データを読み込む。
###ライブラリの読み込み##### library("XLConnect") library("tcltk") ######## ###データの読み込み##### selectABook <- paste(as.character(tkgetOpenFile(title = "エクセルファイルを選択", filetypes = '{"エクセルファイル" {".xls" ".xlsx"}}')), 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]) #メールアドレスの重複削除 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"
後は、適時エクセルにデータを変換したりしています。エクセルへの変換はこの記事を参照ください。