Je suis très nouveau dans R donc j'espère que ma question sera intéressante. Ce que je veux faire est assez simple. Voici un échantillon de mon ensemble de données:
> 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
Je voudrais créer une nouvelle colonne "winning cluster"
sur le côté droit de la colonne "cluster 4"
. La colonne "winning cluster"
prendra la valeur la plus élevée entre les colonnes "cluster 1"
à "cluster 4"
chaque ligne et afficher le nom de l' index de cette colonne.
Pour la ligne 1, ce sera cluster 2
, pour la ligne 2 cluster 1
, pour la ligne 3, cluster 1
etc.
Toute aide est appréciée!
Si l'ensemble de données est une data.table
classe, spécifiez les colonnes qui vous intéressent .SDcols
, obtenez l'index de colonne de la valeur la plus élevée dans chaque ligne avec max.col
, utilisez-le pour sélectionner le nom de la colonne et attribuez ( :=
) comme 'gagnant_cluster'
library(data.table)
belongliness[, winning_cluster := names(.SD)[max.col(.SD)],
.SDcols = cluster1:cluster4]
Cet article est collecté sur Internet, veuillez indiquer la source lors de la réimpression.
En cas d'infraction, veuillez [email protected] Supprimer.
laisse moi dire quelques mots