本文へスキップ
からだにいいもの

Rのトピックスを中心に『まだ、まだ、知らない、役に立つ情報?』を発信します。

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

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

 必要なもの

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

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

スポンサーリンク

紹介するコマンド

・  unique() : 重複削除

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

作業方法

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

14.05.04 エクセルデータ

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"

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

スポンサーリンク

コメント(1)

価格および配送状況は変更される場合があります。購入時は商品ページをご確認ください。
当サイトに表示されている商品情報はAmazonから提供されたものであり、更新または削除される場合があります。
karada-goodはAmazonアソシエイトとして、適格販売により収入を得ています。