Obtenir le meilleur élément fréquent dans un facteur dans la R
J'ai un ensemble de chaînes dans un R variable, lorsque je vérifie la classe, il dit qu'il est un facteur.
par exemple.
mySet<-c("abc","abc","def","abc","def","efg","abc")
Je veux obtenir la chaîne de caractères qui se produit le nombre maximum de fois dans cette série(c'est à dire"abc" dans ce cas).
Je comprends une approche consiste à utiliser la hist()
mais je suis confronté à de type de données, et depuis que je suis nouveau à la R je n'étais pas en mesure de trouver ce un moi-même.
OriginalL'auteur arjun010 | 2014-03-01
Vous devez vous connecter pour publier un commentaire.
En fonction de la taille de vos données et la fréquence à laquelle vous devez faire un tel exercice, vous pouvez passer un peu de temps à écrire plus efficace de la fonction. Sous-jacent
table
esttabulate
, qui est beaucoup plus rapide, et peut ainsi conduire à une fonction comme suit:Cette fonction est conçue afin d'identifier lorsqu'il y a plusieurs valeurs pour les valeurs maximales. Comparer les suivantes:
À la petite vecteur de niveau, cette fonction est plus efficace. Cela est encore plus évident avec
factor
vecteurs. Comment sur avec de plus grands vecteurs?J'ai abandonné @sgibb de la fonction à partir de la référence (il s'étend en même temps que
fun1()
) car il renvoie la mauvaise réponse.Un dernier indice de référence....
Comment elle fait pour gérer les liens?
C'est ce que l'
mult = TRUE
paramètre est pour. Est-ce que vous vouliez dire?Oui, je suppose que je n'ai pas regardé d'assez près. Je peux sans doute la réponse à ma propre question avec
?tabulate
, mais je suppose que je voulait dire que simult
était faux, mais deux niveaux ont été aussi fréquentes, alors je me demandais ce qu'il serait de retour.Votre
MaxTable
est une fonction très utile, cependant, il échoue si elle est donnée à un facteur, mais pas chaque niveau est dans les données. Dans ce cas,levels(InVec)[A == max(A)]
a plus de niveaux sur le côté gauche de booléens dans le sous-ensemble. UtilisationInVec <- factor(as.character(InVec))
pour empêcher cette éventualité.OriginalL'auteur A5C1D2H2I1M1N2O1R2T1
Variation sur sqibb:
Mise en garde: Cela ne peut pas gérer les cas dans lesquels les deux valeurs sont tout aussi souvent.
OriginalL'auteur BrodieG