Как настроить значения в зависимости от суммы строки и среднего значения столбца? - PullRequest
0 голосов
/ 14 февраля 2019

Я хочу настроить / изменить значения в таблице в соответствии с их суммой строк и средним значением столбца.Например, у меня есть такая таблица:

df <- data.frame(postal_code=c("51493", "51493", "51493", "51493", "88821", "88821", "88821"),
                 street_section = c("1", "2", "3", "4", "1", "2", "3"),
                 v1 = c(23.2, 21.8, 15.0, 33.2, 53.0, 19.8, 25.5), 
                 v2 = c(26.2, 10.2, 10.5, 22.2, 14.0, 25.2, 28.5),
                 v3 = c(33.3, 45.5, 55.2, 35.0, 23.5, 38.0, 42.5),
                 v4 = c(27.3, 20.8, 21.3, 20.2, 22.0, 15.6, 10.5))

df$row_sum <- rowSums(df[,3:6]) 

Столбцы V1, V2, V3, V4 содержат проценты, которые должны суммироваться вместе до 100%.Во второй таблице у меня есть средний процент переменных для почтового индекса:

df_postal_code <- data.frame(postal_code=c("51493", "88821"),
                            V1 = c(24.4, 33),
                            V2 = c(16.8, 23.2),
                            V3 = c(41.8, 31.8),
                            V4 = c(20.0, 18.1))

Мой вопрос: есть ли способ отрегулировать значения в V1, V2 .. в df таким образом, чтобы ониимеют то же значение, что и в df_postal_code, когда я объединяю их по почтовому индексу (рассчитываем среднее по почтовому индексу) И в то же время, что они составляют до 100% по строке?Есть также два ограничения:

  • Проценты должны иметь значения от 0 до 100

  • Изменения должны быть как можно ниже, например, еслимоя сумма строки равна 110%, я не хочу уменьшать значение на 10. Было бы лучше уменьшить несколько переменных.

В моей таблице более 8000 почтовых индексов, каждый из которых содержит около200 улиц, так что, возможно, стоит помнить и о производительности.

...