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

У меня есть эти data.frame:

       Country_ID    Partner_ID     Export_Value

1995   CZE           CHN            50
1996   CZE           CHN            60
1997   CZE           CHN            90
1998   CZE           CHN            100
1995   CZE           DEU            50
1996   CZE           DEU            160
1997   CZE           DEU            500
1998   CZE           DEU            400

Теперь это не все данные. Рамка , годы идут с 1995-2016, а Partner_ID состоит из 196 стран. Таким образом, я показал только картинку, как она выглядит.

Я пытаюсь добиться суммирования Export_Value для всех возможных Partner_ID в данном году. В приведенных выше данных это будет 1995 = 100, 1995 = 220 и т. Д.

После этого я использовал бы числа в качестве доминирующих, чтобы получить столбец Export_Value _% рядом с Export_Value.

      Country_ID    Partner_ID     Export_Value   Export_Value_%

1995   CZE           CHN            50            0.5 (50%)            
1996   CZE           CHN            60            0.27
1997   CZE           CHN            90            0.15
1998   CZE           CHN            100           0.2
1995   CZE           DEU            50            0.5
1996   CZE           DEU            160           0.73
1997   CZE           DEU            500           0.85
1998   CZE           DEU            400           0.8

Другое возможное, о чем я думал, это создать новую колонку, заполненную результатами суммирования общей годовой стоимости со всеми партнерами. Однако длина этого столбца не будет такой же, как у других столбцов в фрейме данных (при годовом экспорте я мог бы выполнить математику в Excel и получить результаты для будущей работы.)

1 Ответ

0 голосов
/ 09 ноября 2018

Посмотрите на пакет dplyr и tidyverse.

library(dplyr)
df<- df %>% 
  group_by(Year, Partner_ID) %>% 
  summarise(Totals = sum(Export_Value),
  Rate = (n()/sum(Export_Value))
)

n () - количество записей в этой группе.

...