【发布时间】:2020-01-01 18:57:27
【问题描述】:
我希望在 R 中为某个变量 (INTERVIEW_DAY) 创建一个频率表,但考虑到另一个变量作为权重 (WEIGHT)。
我已经尝试使用包data.table 来做到这一点。不过,我很想用 R-Base 包来做。
您会在下面找到我想要的表格类型,但仍然没有加权,这是我想要学习的。
数据 (变量 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
【问题讨论】:
-
嗨 Econ_Spectre,你能显示前后的数据吗?我不明白您从什么数据开始以及您希望它看起来像什么。谢谢!
-
我的错!我会更新问题!
-
@Econ_Spectre 你的 data.table 输出是否符合预期
-
@akrun 不,不是。该值仅与主变量“INTERVIEW_DAY”相关。我想要一个表格,显示上述变量的频率,由变量“WEIGHT”加权。谢谢。
-
您能否更新一下预期的输出。您希望如何考虑频率的“权重”
标签: r frequency weighted-average