加权。 R 中的平均误差
Weighted. mean error in R
我创建了以下数据框
df<-data.frame("A"<-c(1:20), "B"<-c(21:40),"C"<-c(11:30))
names(df)<-c("A", "B", "C")
nameslist<-c("A", "B")
我正在尝试获取合并的两列的均值和加权均值
我试过了
mean(df[,names(df)[names(df)%in%nameslist]])
我收到以下错误。
Warning message:
In mean.default(df[, names(df)[names(df) %in% nameslist]]) :
argument is not numeric or logical: returning NA
我也试过按如下方式计算加权平均值
weighted.mean(df[,names(df)[names(df)%in%nameslist]])
410
在这种情况下,我得到的输出是 410。我无法发现我错在哪里。我请求有人在这里指导我
要获得 A 列和 B 列的全局平均值,请尝试以下代码:
mean(unlist(df[,which(colnames(df)%in%nameslist)]))
[1] 20.5
关于weighted.mean
你要先定义w
:
w
a numerical vector of weights the same length as x giving the weights to use for elements of x.
一个例子:
w<-c(0.5,1)
weighted.mean(unlist(df[,which(colnames(df)%in%nameslist)]),c(rep(w[1],nrow(df)),rep(w[2],nrow(df))))
[1] 23.83333
更新:
如果您想根据值大于零的行数导出权重,解决方案:
w<-c(mean(df[,1]>0),mean(df[,2]>0))
我创建了以下数据框
df<-data.frame("A"<-c(1:20), "B"<-c(21:40),"C"<-c(11:30))
names(df)<-c("A", "B", "C")
nameslist<-c("A", "B")
我正在尝试获取合并的两列的均值和加权均值
我试过了
mean(df[,names(df)[names(df)%in%nameslist]])
我收到以下错误。
Warning message:
In mean.default(df[, names(df)[names(df) %in% nameslist]]) :
argument is not numeric or logical: returning NA
我也试过按如下方式计算加权平均值
weighted.mean(df[,names(df)[names(df)%in%nameslist]])
410
在这种情况下,我得到的输出是 410。我无法发现我错在哪里。我请求有人在这里指导我
要获得 A 列和 B 列的全局平均值,请尝试以下代码:
mean(unlist(df[,which(colnames(df)%in%nameslist)]))
[1] 20.5
关于weighted.mean
你要先定义w
:
w
a numerical vector of weights the same length as x giving the weights to use for elements of x.
一个例子:
w<-c(0.5,1)
weighted.mean(unlist(df[,which(colnames(df)%in%nameslist)]),c(rep(w[1],nrow(df)),rep(w[2],nrow(df))))
[1] 23.83333
更新: 如果您想根据值大于零的行数导出权重,解决方案:
w<-c(mean(df[,1]>0),mean(df[,2]>0))