gpt4 book ai didi

R- 将某些列从 0 标准化为 1,其值等于 0

转载 作者:行者123 更新时间:2023-12-04 03:01:32 27 4
gpt4 key购买 nike

我最近开始使用 are,我想扩展我的数据矩阵。我在这里找到了一种方法Scale a series between two points

x <- data.frame(step = c(1,2,3,4,5,6,7,8,9,10))
normalized <- (x-min(x))/(max(x)-min(x))

由于我的数据由几列组成,因此我只想使用建议的函数对某些列进行规范化。
normalized <- function(x) (x- min(x))/(max(x) - min(x))
x[] <- lapply(x, normalized)

此外,我意识到我的数据集中的某些数据点等于 0,因此所提供的公式不再适用。我在此处添加了建议的扩展名: scaling r dataframe to 0-1 with NA values
normalized <- function(x, ...) {(x - min(x, ...)) / (max(x, ...) - min(x, ...))}

但我不明白我必须如何编码。例如,我想让第 4、5、6 和 10 列标准化,但我想让其余的列保持在数据集中的状态?
我在第 4 列中尝试过:
data <- lapply(data[,4],normalized,na.rm= TRUE)

但它没有用(而不是数据框,结果是一个列表:-(...),有谁知道我该如何修复它?

非常感谢!

最佳答案

试试这个,我修改了normalized功能考虑 NA值(value)观:

db<-data.frame(a=c(22,33,28,51,25,39,54,NA,50,66),
b=c(22,33,NA,51,25,39,54,NA,50,66))

normalized<-function(y) {

x<-y[!is.na(y)]

x<-(x - min(x)) / (max(x) - min(x))

y[!is.na(y)]<-x

return(y)
}

apply(db[,c(1,2)],2,normalized)

你的输出:
               a          b
[1,] 0.00000000 0.00000000
[2,] 0.25000000 0.25000000
[3,] 0.13636364 NA
[4,] 0.65909091 0.65909091
[5,] 0.06818182 0.06818182
[6,] 0.38636364 0.38636364
[7,] 0.72727273 0.72727273
[8,] NA NA
[9,] 0.63636364 0.63636364
[10,] 1.00000000 1.00000000

关于R- 将某些列从 0 标准化为 1,其值等于 0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48803509/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com