这个是简单一点的
sample<-c(3.2,5.1,2.4,1.6,NA,7.9)
normalize_mean_sd <- function(x)
{
sum1<-sum(x,na.rm=TRUE)
mean1<-mean(x,na.rm=TRUE)
sd1<-sd(x,na.rm=TRUE)
for(i in 1:length(x)){
print((x[i]-mean1)/sd1)
}
}
normalize_mean_sd(sample)
本来想全部的函数都自己写呢,但是 is.na 和 sqrt 有点麻烦,就先不管了
sample<-c(3.2,5.1,2.4,1.6,NA,7.9)
normalize_mean_sd <- function(x)
{
sum_vector <- 0
sum_sd<-0
number_na<-0
mean_vector<-0
#求和,平均值,以及NA的个数
for(i in 1:length(x)){
if(is.na(x[i])){
number_na<-number_na+1
}
else{
sum_vector <- sum_vector + x[i]
}
}
mean_vector<-sum_vector/(length(x)-number_na)
#求离均差平方和
for(i in 1:length(x)){
if(is.na(x[i])){
}
else{
sum_sd<-sum_sd+(x[i] - mean_vector)^2
}
}
# 计算标准差
sd1 <- sqrt(sum_sd/(length(x)-1))
for(i in 1:length(x)){
if(is.na(x[i])){
print(x[i])
}
else{
print((x[i]-mean_vector)/sd1)
}
}
}
normalize_mean_sd(sample)
网友评论