2017-03-05 3 views
0

ich eine hypothetische Datenrahmen habe wie folgt:Wie eine Verdichtungsmaßnahme passende data.frame Spalten in R anwenden

# inventory of goods    
year category count-of-good 
2010 bikes  1 
2011 bikes  3 
2013 bikes  5 
2010 skates  1 
2011 skates  1 
2013 skates  0 
2010 skis  0 
2011 skis  2 
2013 skis  2 

mein Endziel ist es, ein gestapeltes Balkendiagramm zu zeigen, wie die %-<good>-of-decade-total hat dich geändert Jahr für Jahr.

daher möchte ich folgendes berechnen:

enter image description here

jetzt, ich soll ggplot(df, aes(factor(year), fill=percent.total.decade.goods) + geom_bar oder ähnliche Lage sein, ein Balkendiagramm, wo jede Bar Summe zu 100% zu schaffen (hoffentlich!).

aber ich kämpfe um zu bestimmen, wie percent.good.of.decade.total (die ganz rechte Spalte) in nicht-hacky Weise zu bekommen. Vielen Dank für Ihre Zeit!

Antwort

1

können Sie verwenden dplyr die Summe zu berechnen:

library("dplyr") newDf=df%>%group_by(year)%>%mutate(decades.total.goods=sum(count.of.goods))%>%ungroup()

Entweder verwenden mutieren oder normale R Syntax, um die „% gut von zehn Jahren insgesamt“

Hinweis zu berechnen: Sie haben nicht mit anderen geteilt Ihre exakter Datenrahmen, so dass die Namen offensichtlich gemacht sind.

+0

, die zu kühl war! Danke fürs Unterrichten! – cdaringe

0

Wir können dies tun, mit ave von base R

df1$decades.total.goods <- with(df1, ave(count.of.good, year, FUN = sum)) 
df1$decades.total.goods 
#[1] 2 6 7 2 6 7 2 6 7 
Verwandte Themen