2016-11-17 16 views
0

のためにRのヒストグラムを生成し、従業員の出席以下は従業員

  date intime outtime 
2 02/11/2015 10:21:27 17:58:12 
3 03/11/2015 10:13:09 18:52:44 
4 04/11/2015 10:11:52 18:40:36 
5 05/11/2015 10:31:42 18:16:57 
6 06/11/2015 10:13:13 18:36:15 
10 10/11/2015 10:03:20 18:07:52 
11 11/11/2015 09:40:20 18:42:20 
12 12/11/2015 10:38:56 18:37:20 
13 13/11/2015 10:45:26 18:09:54 
16 16/11/2015 10:13:13 18:36:15 
17 17/11/2015 10:11:43 18:36:15 
18 18/11/2015 10:13:13 18:36:15 
19 19/11/2015 10:13:13 18:36:15 
20 20/11/2015 12:14:25 20:25:08 
23 23/11/2015 10:08:08 17:57:35 
24 24/11/2015 14:30:32 18:36:15 

のレコードを含む私のデータセットです時間に従業員によって提供される総時間は次のとおりです。

total_time <- with(newdata, sum(pmin(newdata$outtime, "18:00:00") - 
           pmax(newdata$intime, "08:00:00") )) 
total_time <- 24*floor(as.numeric(total_time)) 
"Total time served by employee is : 96 hours" 

私はそれぞれのヒストグラムを作成したいです従業員の勤務時間は毎月5回のビンを持ちます。

+0

'r'タグを使用してデータを共有するには、' dput() 'を使用してください。より多くの情報のためにあなたのポインタを 'r'タグの上に置いてください。 –

+0

何を試しましたか? 'hist()'を見たことがありますか?別のルートは 'barplot()'です。 – Badger

+0

はい、私は試してみましたが、それを正しく作れません。 –

答えて

0

私たちはより多くのヶ月間の情報を持っていたことをデータがそのような変更:ちょうど5個のビンで(より良いヒストグラム用)

library(data.table) 
df = fread(" date intime outtime 
      02/11/2015 10:21:27 17:58:12 
      03/11/2015 10:13:09 18:52:44 
      04/11/2015 10:11:52 18:40:36 
      05/11/2015 10:31:42 18:16:57 
      06/11/2015 10:13:13 18:36:15 
      10/11/2015 10:03:20 18:07:52 
      11/11/2015 09:40:20 18:42:20 
      12/11/2015 10:38:56 18:37:20 
      13/11/2015 10:45:26 18:09:54 
      16/11/2015 10:13:13 18:36:15 
      17/11/2015 10:11:43 18:36:15 
      18/11/2015 10:13:13 18:36:15 
      19/11/2015 10:13:13 18:36:15 
      20/11/2015 12:14:25 20:25:08 
      23/11/2015 10:08:08 17:57:35 
      24/11/2015 14:30:32 18:36:15") 

df$intime <- as.POSIXct(df$intime, format = "%H:%M:%S") 
df$outtime <- as.POSIXct(df$outtime, format = "%H:%M:%S") 

library(lubridate) #to extract the day 
df$day <- dmy(df$date) 
df$day <- day(df$day) 

df$total_time <- difftime(pmin(df$outtime, as.POSIXct("18:00:00", format = "%H:%M:%S")), 
         pmax(df$intime, as.POSIXct("08:00:00", format = "%H:%M:%S")), units = "hours") 
df$total_time <- as.numeric(df$total_time) 

library(ggplot2) 
ggplot(df, aes(x = day, y= total_time))+geom_histogram(stat = "identity", bins = 5) 

op


(唯一の4ビンは、プロットに表示されます24-30日間隔のデータがないため):

df$breaks <- cut(df$day, breaks = c(0,5,10,15,30,max(df$day))) 
df1=ddply(df, "breaks", summarise, "total_hr"=sum(total_time)) 
ggplot(df1, aes(x = breaks, y= total_hr))+ 
    geom_histogram(stat = "identity", bins = 5, binwidth = 0) 

op

+0

ヒストグラムを1ヶ月しか求めませんでした:) –

+0

huh !!!オハイ:(各従業員の合計時間?従業員を区別するにはどうすればいいですか? –

+0

)、またはx軸に時間が必要ですか? –

関連する問題