How can i rescale every column in my data frame to a 0-100 scale? (in r)

后端 未结 2 745
无人共我
无人共我 2021-02-09 05:10

i am trying to get all the colums of my data frame to be in the same scale..

right now i have something like this... where a is on a 0-1 scale b is on a 100 scale and

相关标签:
2条回答
  • 2021-02-09 06:01

    Using scale, if dat is the name of your data frame:

    ## for one column
    dat$a <- scale(dat$a, center = FALSE, scale = max(dat$a, na.rm = TRUE)/100)
    ## for every column of your data frame
    dat <- data.frame(lapply(dat, function(x) scale(x, center = FALSE, scale = max(x, na.rm = TRUE)/100)))
    

    For a simple case like this, you could also write your own function.

    fn <- function(x) x * 100/max(x, na.rm = TRUE)
    fn(c(0,1,0))
    # [1]   0 100   0
    ## to one column
    dat$a <- fn(dat$a)
    ## to all columns of your data frame
    dat <- data.frame(lapply(dat, fn))
    
    0 讨论(0)
  • 2021-02-09 06:04

    My experience is that this is still unanswered, what if one of the columns had a -2, the current answer would not produce a 0-100 scale. While I appreciate the answer, when I attempted it, I have variables that are -100 to 100 and this left some negative still?

    I have a solution in case this applies to you:

    rescale <- function(x) (x-min(x))/(max(x) - min(x)) * 100
    dat <- rescale(dat)
    
    0 讨论(0)
提交回复
热议问题