根据水平系数变量创建每个国家/地区的权重百分比

时间:2018-09-24 10:16:06

标签: r data.table mean

我的数据集具有来自多个国家的观察结果,其因子变量(询问最大问题)为3 let data = { "_id": "5ba8b60a7eae422533eb7e6b", "_class": "com.agile.historicaldata.dao.ASM", "id": 65, "projectId": 1, "incidentData": [{ "_id": "1", "openedBy": "DELA CRUZ, ANNABELLE", "isEnabled": false }, { "_id": "1", "openedBy": "APACIBLE, LORELIE T", "isEnabled": true }, { "_id": "4", "openedBy": "MASACLAO, JOMER R", "isEnabled": false }, { "_id": "3", "openedBy": "MASACLAO, JOMER R", "isEnabled": true }] } let clonedData = JSON.parse(JSON.stringify(data)); clonedData.incidentData = clonedData.incidentData.filter(({isEnabled})=> isEnabled) console.log("After Filtering Data is Same",data); console.log("After Filtering cloned Data changed",clonedData);(可供选择的不同问题)。我想将每个国家/地区的这些水平分布用作衡量与这些问题有关的问题(levels)的权衡工具。

qlvl_1, qlvl_2, qlvl_3

对于我使用的其他有序因素变量:

 n  country wt biggest_problem  qlvl_1 qlvl_2 qlvl_3
 1  NLD     1    1                2      1      5
 2  NLD     1.2  3                2      2      3             
 3  BLG     0.8  2                1      5      2
 4  BLG     1.1  3                3      4      3
 5  GER     2    2                2      2      3
 6  NLD     1    1                1      1      4
 7  NLD     1    1                5      2      1
 8  NLD     1    2                1      5      2
 9  BLG     1.1  1                5      2      1
10  BLG     1.2  3                1      4      1
11  GER     0.8  3                3      2      3
12  NLD     0.9  3                1      2      3

但是对于这个无序的因子变量,这没有任何意义。

我目前最好的赌注是:

df = df[, lapply(.SD, weighted.mean, wt, na.rm = TRUE), .SDcols = df(names), by=country]

但这给了我每个国家级别的比例,而不是每个国家的比例。

为每个国家/地区的每个级别创建百分比权重的最简单方法是什么?

我也一直在考虑如何在数据集中显示这些权重。我猜最简单的方法是针对每个国家/地区为数据集中的每个级别创建权重。但是,是否可能有更优雅的解决方案?例如,是否还可以创建因子水平为数字百分比的因子变量?

所需的输出:

df[, .N, by = list(biggest_problem, country)][,prop := N/sum(N)]

0 个答案:

没有答案