Problem with replacing a comma with a period

I replace the comma with a period in the data.frame column

data[,22] <- as.numeric(sub(",", ".", sub(".", "", data[,22], fixed=TRUE), fixed=TRUE))

But I have values that look like this: 110.00, 120.00, 130.00...

When replacing, I get the value:11000.0, 12000.0, 13000.0

And I would like to get: 110.0,120.0, 130.0....

My column 22 data.frame:

|    n   |
|--------|
|   92,5 |
|   94,5 |
|   96,5 |
|  110.00|
|  120.00|
|  130.00|

What I want to get:

|    n   |
|--------|
|   92.5 |
|   94.5 |
|   96.5 |
|  110.0|
|  120.0|
|  130.0|

or

|    n   |
|--------|
|   92.5 |
|   94.5 |
|   96.5 |
|  110.00|
|  120.00|
|  130.00|

Upvotes: 0

Views: 248

Answers (3)

ThomasIsCoding
ThomasIsCoding

Reputation: 101109

You can use gsub like below

transform(
  df,
  n = as.numeric(gsub("\\D", ".", n))
)

where non-digital character, i.e., "," or ".", are replaced by "."

Upvotes: 1

akrun
akrun

Reputation: 886948

Using str_replace

library(stringr)
data[[22]] <- as.numeric(str_replace(data[[2]], ",", fixed(".")))

Upvotes: 1

Ronak Shah
Ronak Shah

Reputation: 388817

Don't replace the periods since they are already in the format that you want. Replace only commas to period and turn the data to numeric.

data[[22]] <- as.numeric(sub(',', '.', fixed = TRUE, data[[22]]))

Upvotes: 2

Related Questions