Is there a way to remove numbers from the string at appears only at the last. Example
df
Col A
asdf sfsfsd54 sdfsdfsdf sdfsdfsf654
sfs sfsa5dfgdf sf54 sfsfsgg98
sfs fsdgfdsgd gdfg8
Expected output
df
Col A ColB
asdf sfsfsd54 sdfsdfsdf sdfsdfsf654 asdf sfsfsd54 sdfsdfsdf sdfsdfsf
sfs sfsa5dfgdf sf54 sfsfsgg98 sfs sfsa5dfgdf sf54 sfsfsgg
sfs fsdgfdsgd gdfg8 sfs fsdgfdsgd gdfg
Raw data
structure(list(ColA = c("asdf sfsfsd54 sdfsdfsdf sdfsdfsf654",
"sfs sfsa5dfgdf sf54 sfsfsgg98", "sfs fsdgfdsgd gdfg8")), class = "data.frame", row.names = c(NA,
-3L))
>Solution :
This can be done via: gsub:
x <- c("test123", "test12", "test1")
gsub("[0-9]+$", "", x)
Edit – using your data:
df <- structure(list(ColA = c("asdf sfsfsd54 sdfsdfsdf sdfsdfsf654",
"sfs sfsa5dfgdf sf54 sfsfsgg98", "sfs fsdgfdsgd gdfg8")), class = "data.frame", row.names = c(NA,
-3L))
df$ColB <- gsub("[0-9]+$", "", df$ColA)
> df
ColA ColB
1 asdf sfsfsd54 sdfsdfsdf sdfsdfsf654 asdf sfsfsd54 sdfsdfsdf sdfsdfsf
2 sfs sfsa5dfgdf sf54 sfsfsgg98 sfs sfsa5dfgdf sf54 sfsfsgg
3 sfs fsdgfdsgd gdfg8 sfs fsdgfdsgd gdfg