我期待在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
谢谢你的家伙!
在base R
中,我们可以使用table/prop.table
tbl1 <- table(df$INTERVIEW_DAY)
Prop <- prop.table(tbl1)
cumsum(100 * Prop / sum(Prop))