J'ai posé la question ( Comment muter un Nouvelle colonne en modifiant une autre colonne? )
Maintenant, j'ai un autre problème. Je dois utiliser plus de 'déstelié'ids comme, p> à partir de cet identifiant, je souhaite affecter de nouveaux identifiants "Tidy" comme, P> df2 <- data.frame(id=c("A0001","A0010","A0100","B0001","B0010","B0100"),n=c(1,2,3,4,5,6))
3 Réponses :
La fonction str_pad code> est pratique à cette fin, comme vous l'avez dit. Mais vous devez d'abord extraire les chiffres, puis la coller ensemble. library(stringr)
paste0(toupper(str_extract(df1$id, "[aA-zZ]-")),
str_pad(str_extract(df1$id, "\\d+"), width=4, pad="0"))
[1] "A-0001" "A-0010" "A-0100" "B-0001" "B-0010" "B-0100"
Nous pouvons séparer les données en différentes colonnes basées sur "-" code>, convertir les lettres en majuscules, en utilisant sprintf code> tampon avec 0 et combinez les deux colonnes avec Unite code>. df1 %>%
extract(id, c("id1", "id2"), regex = "([:alpha:])-?(\\d+)") %>%
mutate(id1 = case_when(id1 == 'c' ~ 'B',
TRUE ~ id1),
id1 = toupper(id1),id2 = sprintf('%04s', id2)) %>%
unite(id, id1, id2, sep = "")
Merci ronak. Ça marche pour moi. Juste au cas où si je veux convertir "C1" en "B0001", comment puis-je faire cela? (Maintenant, je n'ai pas "-" et je veux changer de caractère)
@Tanttan a mis à jour la réponse sur la façon de faire cela.
solution de tirette forte> p> DATA strong> p> df1 <- data.frame(id=c("A-1","A-10","A-100","b-1","b-10","b-100"),n=c(1,2,3,4,5,6))