归一化为组内的100个数据

时间:2015-09-16 18:14:44

标签: r normalization

我有一个如下所示的数据集:

import boto
import boto.s3
import boto.s3.connection

conn = boto.s3.connect_to_region(
'us-west-2', 
aws_access_key_id='MY_KEY', 
aws_secret_access_key='MY_ACCESS_KEY'
)

conn.create_bucket('bucket_in_west')

我想为每个特征和var1添加一个规范化为100个数据的第四列,如下所示:

(42.26 / 42.26)×100 = 100

(41.81 / 42.26)×100 = 98.93

(41.21 / 42.26)×100 = 97.51

对于特征2和var1 = 1,Value大于var1 = 0值,因此在这种情况下,第5行将按如下方式计算: (47.82 / 51.44)×100 = 92.94

3 个答案:

答案 0 :(得分:3)

如果您的数据是data.table:

data[, col4:= (Value/max(Value))*100, by= Trait]

答案 1 :(得分:2)

或使用标准R:

aov2<-aov(Variable~O+H+O:H, data=df)

答案 2 :(得分:1)

使用 dplyr

library(dplyr)

df %>% 
  group_by(Trait) %>% 
  mutate(Result = Value/max(Value) * 100)

# Output
# Source: local data frame [9 x 4]
# Groups: Trait [3]
# 
#     Var  Trait Value    Result
#   (int) (fctr) (dbl)     (dbl)
# 1     0 Trait1 42.26 100.00000
# 2     1 Trait1 41.81  98.93516
# 3     2 Trait1 41.21  97.51538
# 4     0 Trait2 47.82  92.96267
# 5     1 Trait2 51.44 100.00000
# 6     2 Trait2 51.42  99.96112
# 7     0 Trait3 10.27  96.61336
# 8     1 Trait3 10.63 100.00000
# 9     2 Trait3 10.14  95.39040