Créer une nouvelle colonne dans dataframe basé sur une partie de la chaîne correspondant à d'autres de la colonne
J'ai un dataframe avec 2 colonnes GL
et GLDESC
et souhaitez ajouter une 3ème colonne appelée KIND
basés sur les données qui est à l'intérieur de la colonne GLDESC
.
Le dataframe est comme suit:
GL GLDESC
1 515100 Payroll-Indir Salary Labor
2 515900 Payroll-Indir Compensated Absences
3 532300 Bulk Gas
4 539991 Area Charge In
5 551000 Repairs & Maint-Spare Parts
6 551100 Supplies-Operating
7 551300 Consumables
Pour chaque ligne de la table de données:
- Si
GLDESC
contient le motPayroll
n'importe où dans la chaîne alors je veuxKIND
êtrePayroll
- Si
GLDESC
contient le motGas
n'importe où dans la chaîne alors je veuxKIND
êtreMaterials
- Dans tous les autres cas, je veux
KIND
êtreOther
J'ai cherché des exemples similaires sur stackoverflow, mais ne pouvait pas trouver une, aussi regardé dans R
pour les nuls sur l'interrupteur, grep, d'appliquer et d'expressions régulières pour essayer et correspondre à une partie seulement de la GLDESC
colonne, puis remplir le KIND
colonne avec le type de compte mais a été incapable de le faire fonctionner.
OriginalL'auteur user2948714 | 2013-11-02
Vous devez vous connecter pour publier un commentaire.
Puisque vous avez seulement deux conditions, vous pouvez utiliser un imbriquée
ifelse
:MODIFIER 10/3/2016 (..après avoir reçu plus d'attention que prévu)
Une solution possible pour faire face avec plus de motifs pourrait être pour itérer sur tous les modèles et, à chaque match, de réduire progressivement le nombre de comparaisons:
Vous êtes les bienvenus. 🙂
Salut! Merci pour le partage de cette expression, il est très utile. Si nous devions définir une deuxième variable autres que
kind
je.e je veux une autre chaînelabor
être remplacé parxyz
dans une nouvelle variablenew
puis nous avons à exécuter les regex individuellement pour chaque nouvelle variable. Aussi vous ne définissez paskind
dans la dernière itératif de la fonction. Merci!Tu veux dire quelque chose comme
DF$new = ff(DF$GLDESC, "labor", "xyz", "Other", ignore.case = TRUE)
? La fonction (ff
) à la fin, est le plus général et de son résultat peut être utilisé pour attribuer retour à la "des données.cadre" comme une deuxième étape. Ou ai-je raté votre point de vue?OriginalL'auteur alexis_laz