Мой набор данных, по наблюдениям из разных стран, имеет факторную переменную (которая задает вопрос о самой большой проблеме) с 3 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)]
, но это дает мне долю каждой страны-уровень, а не пропорция по стране.
Какой самый простой способ создать весовые коэффициенты для каждого уровня в каждой стране?
Я также думал о том, как показать эти веса в наборе данных.Я предполагаю, что самый простой способ для каждой страны - создать вес для каждого уровня в наборе данных.Но будет ли возможно более элегантное решение?Можно ли, например, также создать факторную переменную, для которой уровни факторов являются числовыми процентами?
Желаемый результат:
n country biggest_problem qlvl_1 wlvl_1 qlvl_2 wlvl_2 qlvl_3 wlvl_3
1 NLD 1 2 0.4 5 0.3 1 0.3
2 NLD 3 2 0.4 3 0.3 1 0.3
3 BLG 2 1 0.5 2 0.4 1 0.1
4 BLG 3 3 0.5 3 0.4 1 0.1
5 GER 2 2 0.2 3 0.4 1 0.4
6 NLD 1 1 0.4 4 0.3 1 0.3
7 NLD 1 5 0.4 1 0.3 1 0.3
8 NLD 2 1 0.4 2 0.3 1 0.3
9 BLG 1 5 0.5 1 0.4 1 0.1
10 BLG 3 1 0.5 1 0.4 1 0.1
11 GER 3 3 0.2 3 0.4 1 0.4
12 NLD 3 1 0.4 3 0.3 1 0.3