Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/81.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R中的最小-最大规格化,基于另一列设置最小和最大组_R_Normalization - Fatal编程技术网

R中的最小-最大规格化,基于另一列设置最小和最大组

R中的最小-最大规格化,基于另一列设置最小和最大组,r,normalization,R,Normalization,使用R,我试图对一个列进行最小-最大规格化,但我需要按另一列确定的组设置最小值和最大值,而不是使用所有列值的最小值和最大值 请参见此示例: x <- c(0, 0.5, 1, 2.5, 0.2, 0.3, 0.5, 0,0,0.1, 0.7) y <- c(1, 1, 1, 1, 2, 2, 2, 3, 3, 3, 3) df <- data.frame (x, y) df x我不确定你是否需要下面这样的东西 dfout <- within(df,xnorm <

使用R,我试图对一个列进行最小-最大规格化,但我需要按另一列确定的组设置最小值和最大值,而不是使用所有列值的最小值和最大值

请参见此示例:

x <- c(0, 0.5, 1, 2.5, 0.2, 0.3, 0.5, 0,0,0.1, 0.7)
y <- c(1, 1, 1, 1, 2, 2, 2, 3, 3, 3, 3)

df <- data.frame (x, y)

df

x我不确定你是否需要下面这样的东西

dfout <- within(df,xnorm <- ave(x,y,FUN = function(v) (v-min(v))/diff(range(v))))
输出:

# A tibble: 11 x 3
       x     y xnorm
   <dbl> <dbl> <dbl>
 1   0       1 0    
 2   0.5     1 0.2  
 3   1       1 0.4  
 4   2.5     1 1    
 5   0.2     2 0    
 6   0.3     2 0.333
 7   0.5     2 1    
 8   0       3 0    
 9   0       3 0    
10   0.1     3 0.143
11   0.7     3 1 
#一个tible:11 x 3
xyxnorm
1   0       1 0    
2   0.5     1 0.2  
3   1       1 0.4  
4   2.5     1 1    
5   0.2     2 0    
6   0.3     2 0.333
7   0.5     2 1    
8   0       3 0    
9   0       3 0    
10   0.1     3 0.143
11   0.7     3 1 

或者,在
mutate()
语句中,您可以使用函数aggregate

aggregate(x, list(y), min)
  Group.1   x
1       1 0.0
2       2 0.2
3       3 0.0
aggregate(x, list(y), max)
  Group.1   x
1       1 2.5
2       2 0.5
3       3 0.7

# You can create your own function like this
myFun <- function (u) {
    c(min(u), mean(u), max(u))
} 
# and pass myFun to aggregate
aggregate(x, list(y), myFun)
  Group.1       x.1       x.2       x.3
1       1 0.0000000 1.0000000 2.5000000
2       2 0.2000000 0.3333333 0.5000000
3       3 0.0000000 0.2000000 0.7000000

# alternative is "by" different output format
by(x, list(y), myFun)
聚合(x,列表(y),最小值) 第1组x 1 1 0.0 2 2 0.2 3 3 0.0 聚合(x,列表(y),最大值) 第1组x 1 1 2.5 2 2 0.5 3 3 0.7 #您可以像这样创建自己的函数 我的乐趣
# A tibble: 11 x 3
       x     y xnorm
   <dbl> <dbl> <dbl>
 1   0       1 0    
 2   0.5     1 0.2  
 3   1       1 0.4  
 4   2.5     1 1    
 5   0.2     2 0    
 6   0.3     2 0.333
 7   0.5     2 1    
 8   0       3 0    
 9   0       3 0    
10   0.1     3 0.143
11   0.7     3 1 
aggregate(x, list(y), min)
  Group.1   x
1       1 0.0
2       2 0.2
3       3 0.0
aggregate(x, list(y), max)
  Group.1   x
1       1 2.5
2       2 0.5
3       3 0.7

# You can create your own function like this
myFun <- function (u) {
    c(min(u), mean(u), max(u))
} 
# and pass myFun to aggregate
aggregate(x, list(y), myFun)
  Group.1       x.1       x.2       x.3
1       1 0.0000000 1.0000000 2.5000000
2       2 0.2000000 0.3333333 0.5000000
3       3 0.0000000 0.2000000 0.7000000

# alternative is "by" different output format
by(x, list(y), myFun)