No.21638 【R】行列のソート  【赤羽】 2015/04/29(Wed) 17:45

青木先生,
赤羽と申します,ご教示をよろしくお願いいたします。

過日は,以下の投稿で,大変に良い勉強をさせていただきました。
 No. 21625 〜 21627 【R】行列のデータハンドリング
 No. 21618 〜 21620 【R】行和と列和がゼロになる,行と列の一括削除

改めて,御礼を申し上げます。

この関連で,ご教示いただきたいことがございます。

−−−
添付画像ファイルをご覧いただければ助かります。

表1に,レコメンデーションの条件つき確率表をお示ししています。
(ファイル名は,"pYX.csv")

【行】人にレコメンする,【列】本の確率を,行ベクトルで表現しています。

これを見やすいように,表2のようにソートしたいと思います。

行ベクトルをソート(降順)した結果を,数字ではなく,【列】本の名前に置き換えて表示したいと思います。
人01さんの場合を例示しました。

このRプログラムを作成しました。

大規模データですので,性能向上のために,ループを回避したいと思います。
apply関数で,ループを回避したプログラムを例示していただけると大変に勉強になります。

以下,私のプログラム例です。

m1 <- read.table("pYX.csv",header=T, row=1, sep=",")

m2 <- m1

a <- colnames(m1)

for (i in 1:nrow(m1)) {
b <- m1[i,]
c <- a[rev(order(b))]
m2[i,] <- c
}

colnames(m2) <- ( 1:ncol(m1) )

m2

どうぞ,よろしくお願いいたします。


No.21639 Re: 【R】行列のソート  【青木繁伸】 2015/04/29(Wed) 20:39

まずはあなたのプログラムを動かしてみたいと思うし,自分が作ったプログラムがあなたのプログラムと同じ結果を出すかどうかは必須確認事項なので,あなたが使ったデータ例 m1 を提示してください(pYX.csv でもいいけど)。あまり大きいと問題なので,ほどほどの大きさのものを。

No.21640 Re: 【R】行列のソート  【赤羽】 2015/04/30(Thu) 06:17

青木先生,
赤羽と申します,ご教示をよろしくお願いいたします。

色々とありがとうございます。

小規模なデータを作成して,添付ファイルにてお示しをいたします。
ご確認にお使いいただければ助かります。

お待ちください。

No.21641 Re: 【R】行列のソート  【青木繁伸】 2015/04/30(Thu) 06:40

たぶん,以下のプログラムでよいと思います。
name <- colnames(m1)
m2 <- t(apply(m1, 1, function(x) name[order(x, decreasing=TRUE)]))
m2

No.21642 Re: 【R】行列のソート  【赤羽】 2015/04/30(Thu) 22:26

青木先生,
赤羽と申します,大変にお世話になりました。

私のプログラムと同じ結果になることを,確認させていただきました。

良いお手本をご教示いただき,いい勉強をさせていただきました。

apply関数のパフォーマンスを実感いたしましたので,これを契機に,apply関数の使い方を勉強いたします。

心から御礼を申し上げます。

● 「統計学関連なんでもあり」の過去ログ--- 047 の目次へジャンプ
● 「統計学関連なんでもあり」の目次へジャンプ
● 直前のページへ戻る