2017-07-12 1 views
-3

Je suis nouveau à R et je la trame de données suivante (appelée mydata1) au format csv:Comment formater mes données dans R pour qu'il affiche une nouvelle colonne avec des valeurs en pourcentage du total des colonnes pour chaque période pertinente?

Period  Market  Amount 
FY 15-16 UK  500 
FY 15-16 France 200 
FY 15-16 Germany 300 
FY 15-16 Poland 100 
FY 16-17 UK  700 
FY 16-17 France 500 
FY 16-17 Germany 200 
FY 16-17 Poland 100 

J'ai besoin que trame de données pour me montrer une nouvelle colonne avec le poids de chaque marché (en termes de pourcentage) sur le montant total de sa période pertinente.

Je montre ci-dessous un tableau croisé dynamique Excel fait en utilisant ces mêmes données (afin de mieux aider à comprendre ce que je cherche):

Screenshot 1

Je veux que mon nouveau cadre de données (appelons-le mydata2) en R pour ressembler à ce qui suit:

Screenshot 2

Comment puis-je y parvenir?

+0

Merci, mais je reçois le message d'erreur suivant quand je le lance: mydata2 <- ave (df $ Montant, df $ Période, FUN = function (x) 100 * x/sum (x)) Erreur dans df $ Période: l'objet du type 'fermeture' n'est pas un sous-ensemble – user3115933

+0

J'ai essayé de trouver comment utiliser dput ici: https://gist.github.com/dsparks/3688652 Cependant, J'ai peur de rester coincé! – user3115933

Répondre

1

Essayez ceci:

library(dplyr) 
df <- df %>% 
    group_by(Period) %>% 
    mutate(pct_year = Amount/sum(Amount)*100) %>% 
    ungroup() 
+0

Merci beaucoup! Exactement ce dont j'avais besoin. C'était vraiment utile! – user3115933

+0

Heureux que c'était utile! –