2017-05-02 16 views
0

저는 R이 처음인데 각 요일마다 데이터 포인트의 빈도를 보여주는 막대 그래프를 작성하려고합니다 (데이터 빈도가 너무 높음). 월요일에, 화요일 요법). 원시 데이터 세트에는 날짜와 시간에 대한 정보가 YYYY-MM-DD HH : MM : SS 형태로 포함되어 있기 때문에 처음에는 날짜를 스크립트로 요일의 숫자 값으로 변환했습니다.R : 주중 문자로 인식 : 숫자 값으로 변환하는 방법

Weekday <- format(as.POSIXct(strptime(df$DateAndTime, "%Y-%m-%d %H:%M:%S", 
tz="")),format = "%w")) 
Data$Weekday <- Weekday 
요약 클래스에서, 평일 (0은 일요일 0-6) 수에 대한 데이터에서

hist(Data$Weekday) 
Error in hist.default(Data$Weekday) : 'x' must be numeric 

데이터 파일 :

나는 히스토그램을 만들려고 다음과 같은 메시지를 수신하고 있습니다 및 모드는 두 문자입니다. 문자로 R이 숫자로 인식하는 숫자 데이터 포인트 (평일을 나타냄)를 어떻게 변경합니까?

감사합니다.

+2

넌 http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example (a [재현성 예]를 제공한다)를 샘플 입력 데이터와 함께 사용하여 코드를 실행하고 테스트 할 수 있습니다. 평일에 0-6으로 코딩 된 열이 이미 있습니다. 왜 새로 만드는거야? – MrFlick

+1

'as.numeric (Data $ Weekday)' – G5W

+1

' barplot (테이블 (Data $ Weekday))' –

답변

0

평일을 다룰 때 lubridate 패키지를 사용하는 것이 좋습니다. 평일에 wday() 기능이 있어야한다고 말하는 YYYY-MM-DD HH : MM : SS 형식에서 곧바로 갈 수 있으며 ggplot2와 매우 잘 맞습니다.

library(readr) 
library(lubridate) 
library(ggplot2) 

example_data <- read_csv("datetime\n 
         2016-12-03 00:01:00\n 
         2016-12-03 00:02:00\n 
         2016-12-04 00:03:00\n 
         2016-12-04 00:04:00\n 
         2016-12-05 00:05:00\n 
         2016-12-06 00:04:00\n 
         2016-12-07 00:05:00\n 
         2016-12-08 00:04:00\n 
         2016-12-09 00:04:00\n 
         2016-12-11 00:05:00\n 
         2016-12-12 00:06:00\n 
         2016-12-13 00:07:00\n 
         2016-12-13 00:08:00\n 
         2016-12-14 00:09:00\n 
         2016-12-14 00:10:00") 

ggplot(example_data, aes(wday(datetime, label = TRUE))) + 
    geom_histogram(stat = "count") + 
    labs(x = NULL) 

+0

고맙습니다. 매우 도움이되었습니다. – ima