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