私はRにとても慣れていないので、私の質問が面白いものになることを願っています。私がやりたいことは非常に簡単です。これが私のデータセットのサンプルです:
> head(belongliness)
ACTIVITY_X ACTIVITY_Y ACTIVITY_Z Event cluster1 cluster2 cluster3 cluster4
1: 40 47 62 Head-up 0.1900989 0.768225365 0.0160654667 0.025610279
2: 60 74 95 Head-up 0.5392218 0.038558310 0.0064671635 0.415752686
3: 62 63 88 Head-up 0.7953673 0.044981152 0.0067121719 0.152939414
4: 60 56 82 Head-up 0.9941016 0.002608879 0.0003007537 0.002988748
5: 66 61 90 Head-up 0.7027407 0.048318016 0.0079239680 0.241017291
6: 60 53 80 Head-up 0.9541378 0.023338896 0.0024442116 0.020079071
列"winning cluster"
の右側に新しい列を作成したいと思います"cluster 4"
。列は"winning cluster"
、列の中で最も高い値を取る"cluster 1"
には"cluster 4"
、行ごとにその列のインデックス名を表示します。
行1の場合cluster 2
、行2のcluster 1
場合、行3の場合cluster 1
など。
どんな助けでも大歓迎です!
データセットがdata.table
クラスの場合、対象の列を指定し、で各行の.SDcols
最大値の列インデックスを取得しmax.col
、それを使用して列名を選択し、(:=
)を「winning_cluster」として割り当てます。
library(data.table)
belongliness[, winning_cluster := names(.SD)[max.col(.SD)],
.SDcols = cluster1:cluster4]
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加