r0到r5中的归一化

r0到r5中的归一化,r,dplyr,normalization,normalize,R,Dplyr,Normalization,Normalize,我有一个数据框,如下所示: A B C ab gb 0.03 fn mn 0.12 po er 0.43 oo et 0.22 iu ew 0.77 ii mn 0.14 dd wr 0.99 qw ty 0.45 如何将列C规格化为0-5的范围。我知道你可以用dplyr这样做,但它不能将

我有一个数据框,如下所示:

  A       B         C
 ab      gb      0.03
 fn      mn      0.12
 po      er      0.43
 oo      et      0.22
 iu      ew      0.77
 ii      mn      0.14
 dd      wr      0.99
 qw      ty      0.45
如何将列C规格化为0-5的范围。我知道你可以用dplyr这样做,但它不能将其转换为0-5

normalize <- function(x){
  return((x-min(x)) / (max(x)-min(x)))
}

scaled_data <- 
  df %>%
  group_by(A, B) %>%
  mutate(NORMALIZED = normalize(C))
标准化%
变异(标准化=标准化(C))

下面介绍如何使用
dplyr
使用
scales::rescale
。我将把添加
组的任务留给您

df <-read.table(text="  A       B         C
 ab      gb      0.03
 fn      mn      0.12
 po      er      0.43
 oo      et      0.22
 iu      ew      0.77
 ii      mn      0.14
 dd      wr      0.99
 qw      ty      0.45",header=TRUE,stringsAsFactors=FALSE)

df%>%
mutate(C=scales::rescale(C,to=c(0, 5)))

   A  B        C
1 ab gb 0.000000
2 fn mn 0.468750
3 po er 2.083333
4 oo et 0.989583
5 iu ew 3.854167
6 ii mn 0.572917
7 dd wr 5.000000
8 qw ty 2.187500
df%
变异(C=scales::重新缩放(C,to=C(0,5)))
A、B、C
1 ab gb 0.000000
2 fn锰0.468750
3邮政编码2.083333
4 oo et 0.989583
5 iu ew 3.854167
6 ii锰0.572917
7 dd wr 5.000000
8 qw ty 2.187500

您可以使用dplyr
df1%>%mutate(C=5*C/max(C))
scales::rescale()
什么是“您可以使用dplyr这样做,但它不会将其转换为0-5”的意思?你说你可以和你不能那样做,那么你想说什么?也许你是想说,你知道如何使用dplyr来做与图中所示相同的事情,但这并不是你想要的。但是,即使你说得很清楚,为什么还要提到这一点呢?