Создание процентных весов для каждой страны на основе переменной фактора уровня - PullRequest
0 голосов
/ 24 сентября 2018

Мой набор данных, по наблюдениям из разных стран, имеет факторную переменную (которая задает вопрос о самой большой проблеме) с 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...