GOOGLE ADS

samedi 23 avril 2022

Obtenez un vecteur qui contient la chaîne avant un caractère spécifique de chaque élément dans une colonne de dataframe

J'ai un dataframe qui ressemble à ceci:

df = data.frame(V1= c(1:3), V2 = c("abc-1-10", "def-2-19", "ghi-3-937"))

J'aimerais pouvoir ajouter une colonne V3 à cette trame de données de sorte que la colonne V3 contienne la chaîne avant le premier trait d'union ("-") dans la colonne V2. Donc ça devrait ressembler à ça:

dfDesired = data.frame(V1= c(1:3), V2 = c("abc-1-10", "def-2-19", "ghi-3-937"), V3 = c("abc", "def","ghi"))

Lorsque j'essaie d'utiliser strsplit, cela me donne une liste de vecteurs avec les trois parties de chaque chaîne.


Solution du problème

Vous pouvez tout laisser tomber après le premier-

En base R,

transform(df, V3 = sub('-.*', '', V2))
# V1 V2 V3
#1 1 abc-1-10 abc
#2 2 def-2-19 def
#3 3 ghi-3-937 ghi

Aucun commentaire:

Enregistrer un commentaire

Comment utiliseriez-vous .reduce() sur des arguments au lieu d'un tableau ou d'un objet spécifique ?

Je veux définir une fonction.flatten qui aplatit plusieurs éléments en un seul tableau. Je sais que ce qui suit n'est pas possible, mais...