Home > database >  How to create a new character column removing text from another column in dataframe in r
How to create a new character column removing text from another column in dataframe in r

Time:02-06

I have the following data frame in R

East    24  Consumer    7/18/2018 0:00  Second Class    Pennsylvania    Chairs  USD71.37
East    29  Consumer    9/21/2016 0:00  Standard Class  Pennsylvania    Binders USD9.61
East    33  Consumer    9/21/2016 0:00  Standard Class  Pennsylvania    Binders USD6.85
East    199 Corporate   7/13/2018 0:00  Standard Class  Pennsylvania    Binders USD2.94
East    216 Corporate   1/9/2016 0:00   Standard Class  Ohio    Machines    USD1188
East    222 Consumer    12/27/2016 0:00 First Class Ohio    Binders USD24
East    224 Consumer    12/27/2016 0:00 First Class Ohio    Machines    USD252
East    331 Consumer    9/1/2017 0:00   First Class Pennsylvania    Binders USD28
East    333 Consumer    4/29/2017 0:00  Second Class    Pennsylvania    Binders USD40
East    334 Consumer    4/29/2017 0:00  Second Class    Pennsylvania    Binders USD8

The last column is sales which is a character - my problem is I want to create a new column with sales numbers that has just the numbers - please help if able!!!!!

CodePudding user response:

We could use parse_number function from readr package:

Here V10 is your last column name:

library(dplyr)
library(readr)

df %>% 
  mutate(newCol = parse_number(V10))
     V1  V2        V3         V4   V5       V6    V7           V8       V9      V10  newCol
1  East  24  Consumer  7/18/2018 0:00   Second Class Pennsylvania   Chairs USD71.37   71.37
2  East  29  Consumer  9/21/2016 0:00 Standard Class Pennsylvania  Binders  USD9.61    9.61
3  East  33  Consumer  9/21/2016 0:00 Standard Class Pennsylvania  Binders  USD6.85    6.85
4  East 199 Corporate  7/13/2018 0:00 Standard Class Pennsylvania  Binders  USD2.94    2.94
5  East 216 Corporate   1/9/2016 0:00 Standard Class         Ohio Machines  USD1188 1188.00
6  East 222  Consumer 12/27/2016 0:00    First Class         Ohio  Binders    USD24   24.00
7  East 224  Consumer 12/27/2016 0:00    First Class         Ohio Machines   USD252  252.00
8  East 331  Consumer   9/1/2017 0:00    First Class Pennsylvania  Binders    USD28   28.00
9  East 333  Consumer  4/29/2017 0:00   Second Class Pennsylvania  Binders    USD40   40.00
10 East 334  Consumer  4/29/2017 0:00   Second Class Pennsylvania  Binders     USD8    8.00

CodePudding user response:

If the column is called "a", you can sub set the string and then convert to numeric like this:

> a <- c("USD71.37","USD9.61")
> 
> as.numeric(str_sub(a,4,-1))
[1] 71.37  9.61
  •  Tags:  
  • Related