R 通过从数据中删除一些变量来对数据进行加权

R 通过从数据中删除一些变量来对数据进行加权,r,dataframe,R,Dataframe,我有每个变量的权重,除了第二个变量 variables values w 1: Var1 0.02480052 40.3217290 2: Var3 0.02657701 37.6264988 3: Var4 -0.37417694 2.6725324 4: Var5 1.30037139 0.7690111 5: Var6 0.73508732 1.3603826 6: Var7 0.023

我有每个变量的权重,除了第二个变量

    variables      values      w
1:      Var1  0.02480052 40.3217290
2:      Var3  0.02657701 37.6264988
3:      Var4 -0.37417694  2.6725324
4:      Var5  1.30037139  0.7690111
5:      Var6  0.73508732  1.3603826
6:      Var7  0.02313702 43.2207787
7:      Var8  0.64506139  1.5502400
8:      Var9  0.10391410  9.6233330
9:     Var10  0.34537472  2.8954059
我必须根据相应变量的权重
w
值对其进行缩放(忽略第二个变量,因为它没有权重)。我使用了以下命令
body.w.cp=scale(body,center=F,scale=w)
,但混淆之处在于某些权重显示为“NA”:

因此,我如何对相应的变量进行加权,并获得没有加权值的其他变量。

基本R的
scale()
函数接受三个参数:
x
中心
缩放

特别是,
比例
必须是逻辑值(
TRUE
FALSE
)或长度等于x列数的数字向量)。如果scale是一个长度等于x的列数的数字向量,则x的每一列都被scale中相应的值所除

在您的特定情况下,当您运行
scale(body,scale=w)
时,您的
w
必须是您环境中的命名变量。如果是上面显示的向量,则
body
的每一列都会被scale中相应的值所除,被缺少的值(
NA
)所除的任何内容也会被
NA
。例如:

4/as.numeric(NA) 
将返回
NA

因此,与其忽略第二个变量,因为它没有您所说的权重,不如让第二个变量为1,而不是“NA”。结果向量应该是有意义的

4/as.numeric(NA)