R 0 到 5 中的归一化
Normalization in R 0 to 5
我有一个数据框如下:
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))
以下是使用 scales::rescale
对 dplyr
进行操作的方法。我会留给你添加 group_by
.
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
我有一个数据框如下:
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))
以下是使用 scales::rescale
对 dplyr
进行操作的方法。我会留给你添加 group_by
.
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