Convert from billion to million and vice versa

后端 未结 6 545
旧巷少年郎
旧巷少年郎 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:52

    Another method: separate the monetary value from the text using split:

    # split value and "level" in a list
    temp <- split(df$Revenue, split=" ")
    # add separately to data.frame
    df$Revenue <- sapply(temp, function(i) as.numeric(i[[1]]))
    df$level <- sapply(temp, function(i) "[", 2)
    
    df
      Brands Revenue level
    1      A 50100.0    bn
    2      B 41200.0    bn
    3      C    32.5    bn
    4      D 15100.0    bn
    

    Now, convert to millions subsetting on the levels with "bn":

    df$Revenue[df$level == "bn"] <- df$Revenue[df$level == "bn"] * 1000
    df$level <- "Mn"
    

    This results in

    df
      Brands Revenue level
    1      A  0.0501    Mn
    2      B  0.0412    Mn
    3      C 32.5000    Mn
    4      D  0.0151    Mn
    

    Instead convert to billions (a similar procedure)

    df$Revenue[df$level == "Mn"] <- df$Revenue[df$level == "Mn"] / 1000
    df$level <- "bn"
    

    This results in

    df
      Brands Revenue level
    1      A  0.0501    bn
    2      B  0.0412    bn
    3      C 32.5000    bn
    4      D  0.0151    bn
    

提交回复
热议问题