Convert from billion to million and vice versa

后端 未结 6 538
旧巷少年郎
旧巷少年郎 2020-11-30 15:27

Suppose I have the following data frame named DF. I would like to convert all the values in the Revenue column to the same unit.

         


        
6条回答
  •  伪装坚强ぢ
    2020-11-30 15:37

    One idea,

    new <- ifelse(gsub('.*\\s+', '', DF$Revenue) == 'bn',
                  as.numeric(gsub('[A-Za-z]', '', DF$Revenue))*1000, DF$Revenue)
    
    new[!grepl('Mn', new)] <- paste(new[!grepl('Mn', new)], 'Mn', sep = ' ')
    DF$Revenue <- new
    
    DF
    #  Brands  Revenue
    #1      A 50100 Mn
    #2      B 41200 Mn
    #3      C  32.5 Mn
    #4      D 15100 Mn
    

    To do the opposite then,

    new <- ifelse(gsub('.*\\s+', '', DF$Revenue) == 'Mn',
                   as.numeric(gsub('[A-Za-z]', '', DF$Revenue))/1000, DF$Revenue)
    
     new[!grepl('bn', new)] <- paste(new[!grepl('bn', new)], 'bn', sep = ' ')
     DF$Revenue <- new
     DF
    #  Brands   Revenue
    #1      A   50.1 bn
    #2      B   41.2 bn
    #3      C 0.0325 bn
    #4      D   15.1 bn
    

提交回复
热议问题