Значение Recherche в другом кадре данных для вычисления - PullRequest
0 голосов
/ 14 февраля 2019

У меня есть df, который выглядит так:

df1 <- data.frame(country = c("C1","C1","C2","C2"),year = c(1998,2001,1998,2001), amount = c(11000,11500,5000,4100))

Я создал другой df на основе первого, как показано ниже:

df2 <- aggregate(amount ~ year, df1, sum)

Я хотел бы создать новый столбец df1$ratio соответствует сумме рациона каждого удостоверения личности за каждый год.это должно выглядеть так:

df3 <- data.frame(country = c("C1","C1","C2","C2"),year = c(1998,2001,1998,2001), amount = c(11000,11500,5000,4100), ratio = c(.6875, .7372,.3125,.2628))

Любая идея?

1 Ответ

0 голосов
/ 14 февраля 2019

Вместо двухэтапного процесса это можно сделать с помощью ave из base R

df1$ratio <- with(df1, amount/ave(amount, year, FUN = sum))

или mutate из dplyr

library(dplyr)
df1 %>%
    group_by(year) %>%
    mutate(ratio = amount/sum(amount))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...