2014-04-28 5 views
0

Я пытаюсь создать штрих-план, в котором показаны каждый из четырех хирургов по оси x и сумма каждой продолжительности операции на оси y, помощь очень признателен. «Хирург» - это тип персонажа, а «Длительность» - тип «раз» из пакета chron.r barplot, который отображает суммы значений y для каждого x

Образец данных:

Surgeon Duration 
Jack 00:22:00 
Ben  00:34:00 
Charles 03:12:00 
Hank 01:15:00 
Jack 00:59:00 
Ben  00:44:00 
Hank 01:46:00 
Hank 00:32:00 
Ben  00:49:00 
Ben  06:19:00 
Charles 07:02:00 
Jack 00:58:00 
Jack 00:21:00 
+2

Что вы пробовали? На этом сайте должна быть задана тысяча вопросов 'aggregate' и' sum by group' для R. 'barplot()' в конечном счете является вашей конечной точкой для построения графика, как я надеюсь, вы уже догадались. Попробуйте что-то вроде: 'barplot (с (dat, tapply (Duration, Surgeon, sum)))' for starters – thelatemail

ответ

1

Если предположить, что у вас есть входной файл с именем Input.txt, который содержит данные в вашем вопросе, это поможет вам довольно близко. Для справки вы должны посмотреть на documentation, чтобы узнать, как получить материал из объекта chron.

# Aggregation 
library(chron) 
data = read.table("Input.txt", header=T, as.is =c(T,T)) 
data$Duration = chron(times=data$Duration) 
processed = aggregate(Duration ~ Surgeon, data, sum) 
print(processed) 

# This will do total seconds, but you can change it to whatever you want to plot. 
total_seconds = hours(processed$Duration) * 3600 + minutes(processed$Duration) * 60 + seconds(processed$Duration) 
barplot(total_seconds, names.arg=processed$Surgeon) 
+0

Почему умножение для каждого компонента отдельно? Разве не просто умножение дней было бы в порядке? То есть - 'с (dat, tapply (Продолжительность, Хирург, сумма)) * 86400' – thelatemail

+0

@thelatemail, я не тестировал это, но я написал его самым читаемым образом, о котором я мог думать в первую очередь. :) – merlin2011

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