R中的加权频率表

问题描述 投票:0回答:1

我期待在R中为某个变量(INTERVIEW_DAY)创建一个频率表,但要考虑另一个变量作为权重(WEIGHT)。

我已经尝试使用软件包data.table来做到这一点。我很乐意用R-Base Package来做。

下面您会找到我想要的表格类型,但仍然没有加权,这是我希望向大家学习的表格。

数据(变量TUCASEID,INTERVIEW_DAY和WEIGHT):

TUCASEID INTERVIEW_DAY    WEIGHT
1  2.00301e+13             5 8155462.7
2  2.00301e+13             6 1735322.5
3  2.00301e+13             6 3830527.5
4  2.00301e+13             4 6622023.0
5  2.00301e+13             4 3068387.3
6  2.00301e+13             4 3455424.9
7  2.00301e+13             1 1637826.3
8  2.00301e+13             2 6574426.8
9  2.00301e+13             6 1528296.3
10 2.00301e+13             4 4277052.8
11 2.00301e+13             6 1961482.3
12 2.00301e+13             7  505227.2
13 2.00301e+13             6 2135476.8
14 2.00301e+13             3 5366309.3
15 2.00301e+13             6 1058351.1

使用打包的data.table创建表:

df <- setDT(df)
df_freq_table <- df[,.(Freq = .N), by = INTERVIEW_DAY][, Prop := Freq / sum(Freq)][, Cum := cumsum(100 * Prop / sum(Prop))]

我的输出:df_freq_table []

 INTERVIEW_DAY Freq       Prop        Cum
1:             5    1 0.06666667   6.666667
2:             6    6 0.40000000  46.666667
3:             4    4 0.26666667  73.333333
4:             1    1 0.06666667  80.000000
5:             2    1 0.06666667  86.666667
6:             7    1 0.06666667  93.333333
7:             3    1 0.06666667 100.000000

谢谢你的家伙!

r frequency weighted-average
1个回答
0
投票

base R中,我们可以使用table/prop.table

tbl1 <- table(df$INTERVIEW_DAY)
Prop <- prop.table(tbl1)
cumsum(100 * Prop / sum(Prop))
© www.soinside.com 2019 - 2024. All rights reserved.