根据最大值缩放数字
Scale numbers based on the largest value
我有这样的数据:
mydata <- c(365673, 478934, 897464, 254778, 678899)
我想使用唯一编号转换 mydata。这就是我计算唯一编号的方式:
- 提取最大的数,本例为897464
- 之后我们从 897464 得到唯一的数字是 800000
- 然后将向量除以该值
我想要的输出将是:
newdata <- mydata / 800000
newdata
# [1] 0.4570913 0.5986675 1.1218300 0.3184725 0.8486238
如何创建函数?
我想这就是你想要做的:
scale.nums <- function(v){
x = max(v)
pow <- 10^floor(log10(x))
x <- x %/% pow * pow
v/x
}
例如:
> mydata <- c(365673, 478934, 897464, 254778, 678899)
> scale.nums(mydata)
[1] 0.4570913 0.5986675 1.1218300 0.3184725 0.8486238
plyr
有 round_any
函数,在这里很有用。
mydata <- c(365673, 478934, 897464, 254778, 678899)
mydata/max(plyr::round_any(mydata, 100000, floor))
#[1] 0.4570913 0.5986675 1.1218300 0.3184725 0.8486238
我有这样的数据:
mydata <- c(365673, 478934, 897464, 254778, 678899)
我想使用唯一编号转换 mydata。这就是我计算唯一编号的方式:
- 提取最大的数,本例为897464
- 之后我们从 897464 得到唯一的数字是 800000
- 然后将向量除以该值
我想要的输出将是:
newdata <- mydata / 800000
newdata
# [1] 0.4570913 0.5986675 1.1218300 0.3184725 0.8486238
如何创建函数?
我想这就是你想要做的:
scale.nums <- function(v){
x = max(v)
pow <- 10^floor(log10(x))
x <- x %/% pow * pow
v/x
}
例如:
> mydata <- c(365673, 478934, 897464, 254778, 678899)
> scale.nums(mydata)
[1] 0.4570913 0.5986675 1.1218300 0.3184725 0.8486238
plyr
有 round_any
函数,在这里很有用。
mydata <- c(365673, 478934, 897464, 254778, 678899)
mydata/max(plyr::round_any(mydata, 100000, floor))
#[1] 0.4570913 0.5986675 1.1218300 0.3184725 0.8486238