我的数据集的加权平均值为0.4860247。我试图规范化.5周围的数据。我使用configure
,但我的问题是我没有所有数据。相反,我在一列中有总计数,在另一列中有百分比。
scale()
如何使用加权数字创建0.5左右的缩放分布?我是否需要模拟(data <- data.frame(percent = c(0.455188841201717, 0.461817275747508, 0.464727272727273, 0.466502777777778, 0.472820895522388, 0.475576045627376, 0.489019313304721, 0.490855421686747, 0.491118959107807, 0.506631578947368, 0.526727272727273, 0.541372950819672),
n = c(233, 301, 198, 360, 201, 1052, 466, 332, 269, 304, 374, 244)
)
)数据,然后运行rnorm()
?
编辑:scale()
将保持不变。我想将n
调整为正常分布在0.5左右。基本上,我的数据偏向于没有0.5的平均值。我试图做的是将数据标准化为平均值为0.5,以便我可以看到数字与0.5的平均值相比有多好或多差。
我的数据的当前加权平均值为0.4860247。我想要的输出是将所有大于加权平均值的数字缩放到大于0.5,并且所有小于加权平均值的数字小于.5。
答案 0 :(得分:1)
x = 0.5*sum(df$n) - sum(df$percent*df$n) #additional 'percent*n' required
df$pr = (df$percent*df$n)/ sum(df$percent*df$n) #proportion by which 'x' should be split
df$percent_2 = df$percent + df$pr*x/df$n #add portion of 'x' to each 'percent'
sum(df$percent_2*df$n)/sum(df$n) #New weighted mean
#[1] 0.5
数据强>
df = structure(list(percent = c(0.455188841201717, 0.461817275747508,
0.464727272727273, 0.466502777777778, 0.472820895522388, 0.475576045627376,
0.489019313304721, 0.490855421686747, 0.491118959107807, 0.506631578947368,
0.526727272727273, 0.541372950819672), n = c(233, 301, 198, 360,
201, 1052, 466, 332, 269, 304, 374, 244)), .Names = c("percent",
"n"), class = "data.frame", row.names = c(NA, -12L))