J'ai importé des données à partir d'un fichier dans une trame de données dans R. C'est quelque chose comme ça. Donc maintenant, je veux ajouter la colonne forte> En fonction des valeurs de la colonne Ce n'est qu'un exemple simple que je donne. J'ai un grand nombre de noms et de catégories afin que je souhaite une syntaxe compacte. Comment puis-je faire cela? P> Edit: J'ai changé l'exemple pour mieux répondre à mes besoins car le nom peut être tout numérique. Désolé de ne pas être trop clair avant. P> p>
5 Réponses :
Vous pouvez utiliser ifelse code>. Si votre trame de données a été appelée df code>, vous feriez: df$cat <- ifelse(df$name<100, "Ones", "Hundreds")
df$cat <- ifelse(df$name<1000, df$cat, "Thousands")
Désolé, j'aurais dû être plus clair, j'ai donc changé l'exemple, le nom peut être une valeur alphabétique non numérique. Mais merci, je vais essayer d'appliquer une logique comme ceci et voir.
Vous pouvez utiliser une carte. (Mis à jour pour utiliser stringsasfacteurs = false code>)
+1 Nice utilisation de carte () code>. C'est la deuxième fois dans une semaine quelqu'un ici a utilisé carte () code> dans une réponse et ils semblent vraiment utiles.
@pchalasani Merci c'est une bonne façon de faire le recodage. Cependant, j'ai essayé cela et le mappage est tout faux d'une manière ou d'une autre quand je l'ai fait dans mes données réelles. L'exemple que vous donnez bien. Des raisons possibles à cela?
@Sfactor qui est difficile à dire sauf si je vois plus de vos données réelles
@PCHALASANI J'ai ajouté ce que j'ai fait dans la question. Qu'est-ce que je fais en train de tordre ici?
@sfactor: obtenu! Vous pouvez le réparer si vous utilisez stringsasfactors = false code> dans la première ligne lorsque vous construisez la trame de données. J'ai réparé ma solution pour faire cela. Incidemment, le comportement par défaut de RS du traitement des colonnes de trame de données à la chaîne, car des facteurs me mordent souvent. Je dois continuer à dire stringsasfactors = false code> dans de nombreux endroits de mon code. Parfois, je viens de le mettre sur false globalement comme dans les options (StringsasFactors = FALSE) CODE> Parce que j'ai rarement besoin d'interpréter des cordes comme des facteurs de mon travail, mais votre utilisation peut être différente.
Sans Réduire code>, Carte code> semble étrange ... Pourquoi pas seulement utiliser mapply code>?
[Mise à jour suivant le commentaire de l'OP et modifié q] à l'aide des cadres de données ci-dessus, nous pouvons faire une fusion de base de données. Vous devez configurer une option est indexation: p> lookup code> pour le nom nom code> catégorie code> combinaisons que vous voulez, qui est ok s'il n'y a pas un très grand nombre de < Code> Nom CODE> S (au moins Vous devez uniquement les énumérer une fois que chacun dans recherche code> et que vous n'avez pas à le faire dans l'ordre - liste Tous CAT1 code> nom code> s premier, etc.): p>
Départ: p>
coupé () code> li>
-
recode () code> dans la voiture code> package li>
ul> Peut-être plus simple et plus lisible en utilisant ifelse et% en%: