![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
今回の質問の意図を端的に申せば、「画像のようなデータセットにおいて、"x1", "x2", "x3"の三変数を用いて"Team"をクラスタリングしたい」というものです。
データをインポートし、三つの変数を選択し、クラスター解析を行うと、"Team"を因子の名前として表示することができず、行の数字が名前として表示されてしまいます。
平たく申しますと、樹形図の枝先にくっつく名前が、チーム名(011, 012, ...)になるようにしたいのです。
R コマンダー入門
(http://www.ec.kansai-u.ac.jp/user/arakit/Getting …)
のpp.12-13において、『たいていの場合,R コマンダーは,数値変数と因子とを区別し,因子の平均を計算するといった間違いを行うことを防ぐ』との記述がありますが、私のデータセットにおいて"Team"は数値であり、数値変数として扱われてしまっているのが問題であると考えました。
そこで、以下の手順で"Team"の因子への変換を試みました。
データ→アクティブデータセット内の変数の管理→数値変数を因子に変換→変数("Team"を選択)→OK
※因子水準は「水準名を指定」「数値で」の両方試しました。
しかし残念ながら、この設定を行い三変数によるクラスタリングを行っても、"Team"を因子の名前として表示することができず、行の数字が表示されてしまいます。
煩雑な文章になってしまい、かつ初歩的な質問ばかりで恐縮ですが、なにとぞよろしくお願いいたします。
(本題から外れますが、三変数はそれぞれスケールが違うので標準化する予定です)
![「R commanderによるクラスター解」の質問画像](http://oshiete.xgoo.jp/_/bucket/oshietegoo/images/media/1/542821455_5bb8b72aaeada/M.jpg)
A 回答 (3件)
- 最新から表示
- 回答順に表示
No.3
- 回答日時:
row.names(data) <- data$Team
で、チーム名を行名称にしたら、その後、データから取り除いておかないと
解析に使われてしまいますよ。
data <- data[,-c("Team")]
とすれば良いと思います。
head(data)
で、Team列が消えていればOKです。
No.2
- 回答日時:
#3です。
すみません。Rコマンダーと、Rスタジオを混同していました。Rコマンダーは初心者用のツールですね。
って、ことは、ご質問者さんは、Rのスクリプトを書くのって、難しい人ですか。
No.1
- 回答日時:
私は、コマンダーのようなツールは使わずエディタを使っていますので、スクリプトで回答します。
コマンダーの操作ではなく、スクリプト窓を見て比較して下さい。ご質問者は、なにしろ、行名を変更しようという操作を何もしていませんよね。
コマンダーではできないのかな。
rownames(x) <- x[,1]
x <- x[,-1]
でできます。
xがない、と言われるなら、xは、読み込んだ時の配列名に変えて実行してみてください。
それから、エクセルの画面を見て、すぐにおかしいと分かります。なぜ、チーム名なのに"011"というようにダブルコーテーションを付けないのですか。今、このデータをRにもってくると数値として扱われています。東京西Aとか文字が入っていれば、distをとる時点でエラーが出るはずです。
また、ご質問者がコマンダー上で行われた操作は、その列を因子として扱うということで、1,2,3,・・・という順序尺度に変更しているだけです。つまり、100,105,100であっても数字1,2,1に置き換わるということです。
さて、表示データでクラスター分析(通常のユークリッド距離で、ウォード法は使わず階層的に)をやってみました。つぎのようなスクリプトでできます。
途中途中で、xをダンプして表示していますので、それぞれの段階でどういうように変換(列が行名称にかわったり)しているのか確認して下さい。
コマンダーは開発ツールなので、初心者は使わない方が良いと思います。まずはスクリプトを書くことに習熟することが肝要だと思います。
rm(list=ls())
x <- data.frame(matrix(c(
3.17, 5, 31,
3.18, 9, 45,
2.71, 3, 61,
3.28, 6, 47,
1.94, 8, 22,
4.16, 6, 48,
3.62,11, 47,
2.22, 6, 48,
2.42, 5, 47,
2.95, 5, 50),
ncol=3,byrow=T))
name <- c(
"011",
"012",
"013",
"014",
"015",
"016",
"017",
"018",
"019",
"020")
x <- cbind(name,x)
x # 通常はこれを読み込んでいる
colnames(x) <- c("Team","x1","x2","x3")
rownames(x) <- x[,1]
x <- x[,-1]
x
x <- scale(x)
x
d <- dist(x)
result <- hclust(d)
plot(result)
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- 物理学 ギブス自由エネルギー変化における体積変化の影響 1 2023/06/25 04:56
- C言語・C++・C# C言語初心者 ポインタについて、お助けください、、 2 2023/03/15 23:50
- 英語 "dozen"以外の数の単位が名詞を修飾する場合の"of"の必要性とその理由について 3 2023/04/29 16:03
- 統計学 ダミー変数の因子分析について質問です 1 2022/03/27 14:31
- Photoshop(フォトショップ) 写真に日付を入れるのがそんなに大変か 9 2023/07/22 14:38
- Android(アンドロイド) Team microSDXCカード 256GB この製品は有名で性能は良いものでしょうか 5 2022/09/24 23:25
- 哲学 《太郎ハ花子ガ好きだ》構文から《象は鼻が長い / 僕はウナギだ / コンニャクは太らない》へ 1 2022/05/30 08:48
- Excel(エクセル) [オートフィルター]機能について 3 2023/02/04 14:32
- 英語 "not to worry"の元の表現等について 1 2023/06/22 14:44
- Excel(エクセル) エクセルの数式で教えてください。 1 2022/10/25 09:26
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
「危険分子」と「危険因子」は...
-
因子分析のあとはどうすれば?
-
α係数について教えてください。
-
因子分析の因子負荷量について
-
バリマックス回転とプロマック...
-
SPSSで分析できない(因子分析)
-
カウンターバランスについて
-
「~と~を」と「~と~とを」...
-
心理学実験 『触2点閾』について
-
【至急】心理学の触二点閾実験...
-
引用文献 同じ本から2カ所のとき
-
IQ114は上位何パーセントですか...
-
「交互」とは2つの何かを対象に...
-
ストループ効果の実験について
-
t検定で自由度がn-1の場合...
-
鏡映描写のレポート。
-
知能検査の偏差値とIQの換算に...
-
「知っていない」という日本語...
-
比較することのよさ
-
2件法で因子分析はできますか?
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
因子分析においてのKMOの重要性
-
α係数について教えてください。
-
SPSSで分析できない(因子分析)
-
「危険分子」と「危険因子」は...
-
逆転項目を直すとα係数がマイナ...
-
天井効果の解釈について。
-
SD法の評価尺度について
-
相関分析と重回帰分析
-
パス解析
-
因子分析の因子負荷量について
-
spssでの逆転項目の処理について
-
因子分析における共通性について
-
項目ー全体相関について
-
バリマックス回転って?
-
SD法で得たデータを因子分析す...
-
residualizsdの意味を教えてく...
-
SPSSの出力の見方(主因子...
-
心理学統計について 急ぎです(...
-
A型とAB型からO型って生まれま...
-
心理統計の方法を教えてください
おすすめ情報
恥ずかしながらその通りです。
ただ、安閑としていたわけではなく、console上でスクリプトによりチーム名を行の名前とする方法は把握しました。
> data_file <- "cluster_eclipse.csv"
> data <- read.csv(data_file)
> row.names(data) <- data$Team
> head(data)
Team x1 x2 x3
11 11 3.17 5 31
12 12 3.18 9 45
13 13 2.71 3 61
14 14 3.28 6 47
15 15 1.94 8 22
16 16 4.16 6 48
本来、スクリプトにじっくり取り組んでいくべきだと思いますが、Rコマンダーのメニューでうまくいく方法があるか、適切なスクリプトを併用するで解決できるかを知りたいです。
ご回答いただきながらレスポンスが遅くなり失礼しました。
Console上で、ご指摘の方法を試したところエラーが発生してしまいました。
> data_file <- "cluster_eclipse.csv"
> data <- read.csv(data_file)
> row.names(data) <- data$Team
> data <- data[,-c("Team")]
-c("Team") でエラー: 単項演算子に対する引数が不正です
以上はConsoleのみで操作した結果です。
R commanderを使用して試したことは、
R commander上でデータをインポートしたのちに、Console上で
> row.names(data) <- data$Team
> data <- data[,-c("Team")]
とやってみましたが、同様のエラーが発生しています。