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)