将百分比数据缩放为 50% 的平均值

Scale percentage data to mean of 50%

我有一个加权平均值为 0.4860247 的数据集。我正在尝试将 .5 左右的数据标准化。我正在使用 scale(),但我的问题是我没有所有数据。相反,我在一栏中有总数,在另一栏中有百分比。

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)
)

我如何使用加权数字创建一个 0.5 左右的比例分布?是不是需要模拟(rnorm())数据然后运行scale()?

编辑:n 将保持不变。我想将 percent 调整为正态分布在平均值 0.5 左右。基本上,我的数据已经倾斜到没有 0.5 的平均值。我想要做的是将数据标准化为 0.5 的平均值,这样我就可以看到与 0.5 的平均值相比,一个数字好多少或差多少。

我数据的当前加权平均值是 0.4860247。我想要的输出是将所有大于加权平均值的数字缩放到 .5 以上,并将所有小于加权平均值的数字缩放到小于 .5。

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))