2017-04-03 144 views
0

我有一個加權平均值爲0.4860247的數據集。我試圖規範化.5的數據。我正在使用scale(),但我的問題是我沒有所有的數據。相反,我有一列的總數和另一列的百分比。比例百分比數據的平均值爲50%

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。我期望的輸出是將所有大於加權平均數的數字縮放到0.5以上,並且所有小於加權平均數的數字小於0.5。

+0

這是固定的,'N'或'percent'?你想改變哪些值來調整你的意思?什麼是期望的輸出? – MrFlick

+0

@MrFlick道歉。我已經編輯了我的問題以澄清。 – medavis6

回答

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 

DATA

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