in R, use gsub to remove all punctuation except period
gsub, r, regex, replace
Solution
You can put back some matches like this:
sub("([.-])|[[:punct:]]", "\\1", as.matrix(z))
X..1. X..2.
[1,] "1" "6"
[2,] "2" "7.235"
[3,] "3" "8"
[4,] "4" "9"
[5,] "5" "-10"
Here I am keeping the `.` and `-`.
And I guess , the next step is to coerce you result to a numeric matrix, SO here I combine the 2 steps like this:
matrix(as.numeric(sub("([.-])|[[:punct:]]", "\\1", as.matrix(z))),ncol=2)
[,1] [,2]
[1,] 1 6.000
[2,] 2 7.235
[3,] 3 8.000
[4,] 4 9.000
[5,] 5 -10.000
Problem
I am new to R so I hope you can help me. I want to use gsub to remove all punctuation except for periods and minus signs so I can keep decimal points and negative symbols in my data. Example My data frame z has the following data: ``` [,1] [,2] [1,] "1" "6" [2,] "2@" "7.235" [3,] "3" "8" [4,] "4" "$9" [5,] "£5" "-10" ``` I want to use `gsub("[[:punct:]]", "", z)` to remove the punctuation. Current output ``` > gsub("[[:punct:]]", "", z) [,1] [,2] [1,] "1" "6" [2,] "2" "7235" [3,] "3" "8" [4,] "4" "9" [5,] "5" "10" ``` I would like, however, to keep the "-" sign and the "." sign. Desired output ``` PSEUDO CODE: > gsub("[[:punct:]]", "", z, except(".", "-") ) [,1] [,2] [1,] "1" "6" [2,] "2" "7.235" [3,] "3" "8" [4,] "4" "9" [5,] "5" "-10" ``` Any ideas how I can make some characters exempt from the gsub() function?