2016-02-13 4 views
0

У меня есть набор данных о фондовых портфелях, включая их историю торговли. Мой набор данных df похож на следующий пример:Barplot средних значений различных групп в R

pf_id trade_day price buy inital_trade 
1001 01.09.14 14.22 1 1 
1001 04.09.14 52.33 1 0 
1001 08.09.14 47.33 0 0 
1001 12.09.14 53.12 1 0 
1001 15.09.14 112.13 0 0 
...    
1791 02.02.15 10.23 1 1 
1791 07.02.15 37.88 1 0 
1791 13.02.15 23.32 1 0 
1791 17.02.15 54.34 1 0 
1791 23.02.15 27.44 0 0 
...    
2232 20.10.14 38.12 1 1 
2232 21.10.14 34.45 1 0 
2232 23.10.14 35.78 1 0 
2232 01.11.14 39.98 0 0 
2232 11.11.14 44.23 0 0 
2232 21.11.14 111.23 0 0 
2232 23.11.14 324.56 1 0 
2232 04.12.14 145.56 0 0 
2232 07.12.14 45.67 1 0 
...  

, где pf_id это идентификатор соответствующего портфеля, trade_day является датой сделки, price является ценой сделки, buy является фиктивным, указывающим запасов были куплены или проданы, а initial_trade - это манекен, указывающий первую сделку с новым портфелем.

Я хочу построить торговую деятельность на протяжении всей жизни по всем портфелям с месяцами по оси x и средним числом сделок по всем портфелям по оси Y. До сих пор я могу получить участок только для одного конкретного портфеля, например,

df$month <- as.Date(cut(df$trade_day, breaks="month"))  
ggplot(df[df$id==1001],aes(month) + geom_bar() 

Но я хотел бы иметь средние торговую активность на все портфели, т.е. среднего количества сделок в первом месяце всех портфелей, для вторых месяцев и так далее. Более того, я хочу сделать то же самое для объема торгов (средний объем покупки в первый месяц, средний объем продаж в первый месяц, ...).

Благодарим за помощь!

+0

вы можете быть более конкретным о том, что вы хотели бы видеть на оси у этого участка? средняя покупка за месяц? средний начальный_трейс по месяцам? и т. д. – bjoseph

+0

, если вы хотите получить штрих-код, сначала вам нужно суммировать ваш набор данных с помощью pf_id. – MLavoie

+0

@bjoseph: Я добавил оси к вопросу – jeffrey

ответ

1

Это решение, которое требует dplyr.

Во-первых, я конвертирую ваши даты в тип данных Date, а затем создаю переменную month, которая содержит месяц сделки.

df=df%>%mutate(trade_date=as.Date(df$trade_day,"%d.%m.%y"))%>% mutate(month=format(trade_date, "%m")

Далее я рассчитывать торги по месяцам и общее число строк в месяц по pf_id, то я сделать в среднем из них.

plot = df%>%group_by(month,pf_id)%>%summarize(trades=sum(inital_trade),n=n())%>% group_by(month)%>%summarize(average=trades/n)%>%mutate(month=as.factor(month))

Затем я создаю бар график выхода.

require(dplyr) 
require(ggplot2) 


df=read.csv("~/Documents/stackoverflow.csv",stringsAsFactors = FALSE) 


df=df%>%mutate(trade_date=as.Date(df$trade_day,"%d.%m.%y"))%>% 
    mutate(month=format(trade_date, "%m")) 


plot = df%>%group_by(month,pf_id)%>%summarize(trades=sum(inital_trade),n=n())%>% 
    group_by(month)%>%summarize(average=trades/n)%>%mutate(month=as.factor(month)) 


ggplot(plot,aes(x=month,y=average)) + geom_bar(stat='identity')] 

enter image description here [! [

+1

, используя пробелы при вводе слов, но не в коде? weird – rawr

+0

Что вы имеете в виду? – bjoseph

+0

Вы имеете в виду в тексте ответа? я попытался сделать его более читаемым, я счастлив реализовать любые ваши предложения. – bjoseph

Смежные вопросы