首页 > 解决方案 > 规范化 R 中的每一列

问题描述

标准化每一列。

数据从具有 x 和 y 的第一行开始,然后以数字继续,我相信这就是问题所在。

> normalize <- function(number) {
+ return ((number - min(number)) / (max(number) - min(number)))
+ }
> data$V1_norm<-normalize(data$V1)
> data$V2_norm<-normalize(data$V2)


> data$V1_norm<-normalize(data$V1)
Error in Summary.factor(c(69L, 1L, 22L, 9L, 29L, 44L, 65L, 21L, 61L, 4L,  : 
  ‘min’ not meaningful for factors

> data$V2_norm<-normalize(data$V2)
Error in Summary.factor(c(53L, 27L, 46L, 36L, 33L, 41L, 8L, 15L, 12L,  : 
  ‘min’ not meaningful for factors

标签: r

解决方案


代码看起来不错。我相信您的问题出在数据对象中的V1_normV2_norm中。这两个变量都是因素。

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

data$V1_norm <- normalize(data$V1) 
data$V2_norm <- normalize(data$V2)

data <- data.frame(V1_norm = c(6,1,10,2), V2_norm = c(10,20,100,40))

normalize(data$V1) # returns 0.5555556 0.0000000 1.0000000 0.1111111
normalize(data$V2) # returns 0.0000000 0.1111111 1.0000000 0.3333333

在你的数据集中试试这个:

class(data$V1) 
class(data$V2)

小心诸如.numeric() 之类的函数,您应该仔细检查数据中的不一致之处。


推荐阅读