2013-11-27 3 views
0

У меня есть CSV-файл, который я загружен в R, используя следующую основную команду:Гистограмма будней на год R

lace <- read.csv("lace for R.csv")

Это тянет в моих данных просто отлично. Вот str данных:

str(lace) 
'data.frame': 2054 obs. of 20 variables: 
$ Admission.Day  : Factor w/ 872 levels "1/1/2013","1/10/2011",..: 231 238 238 50 59 64 64 64 67 67 ... 
$ Year    : int 2010 2010 2010 2011 2011 2011 2011 2011 2011 2011 ... 
$ Month    : int 12 12 12 1 1 1 1 1 1 1 ... 
$ Day     : int 28 30 30 3 4 6 6 6 7 7 ... 
$ DayOfWeekNumber  : int 3 5 5 2 3 5 5 5 6 6 ... 
$ Day.of.Week   : Factor w/ 7 levels "Friday","Monday",..: 6 5 5 2 6 5 5 5 1 1 ... 

То, что я пытаюсь сделать, это создать три (3) различных гистограмм, а затем построить их все вместе на одном. Я хочу создать гистограмму для каждого года, где ось x или метки будут дни недели, начинающиеся с воскресенья и заканчивающиеся в субботу.

Во-первых, как бы я хотел создать гистограмму из Факторов, в которые входят дни недели?

Во-вторых, как создать гистограмму для дней недели в течение данного года?

Я попытался использовать следующее сообщение here, но не могу заставить его работать. Я использую Admission.Day в качестве переменного и получить сообщение об ошибке:

dat <- as.Date(lace$Admission.Day)

Error in charToDate(x) : character string is not in a standard unambiguous format

Спасибо,

+1

Первое, что вам нужно сделать, это прочитать документацию для 'as.Date', в частности, описание для? аргумент 'format'. Затем вы захотите взглянуть на функцию '? Weekdays'. – joran

+1

'as.Date' нуждается в источнике' dat <- as.Date (кружево $ Admission.Day, origin = "1970-01-01") ' –

+0

@joran получил все даты сейчас, спасибо за указание формата часть, не имеющая происхождения, как указано в excel, действительно отбрасывала все. –

ответ

1

Расширяющемся на комментарий выше: проблема, как представляется, с импортирующими датами, а чем создание гистограммы. Предполагая, что есть книги Excel «шнурок для R.xlsx» с листа «кружева»:

## Not tested... 
library(XLConnect) 
myData <- "lace for R.xlsx"    # NOTE: need path also... 
wb  <- loadWorkbook(myData) 
lace <- readWorksheet(wb, sheet="lace") 
lace$Admission.Day <- as.Date(lace$Admission.Day) 

должны обеспечить даты, которые работают со всеми функциями даты R. Кроме того, пакет lubridate предоставляет ряд функций, которые более интуитивно понятны в использовании, чем format(...).

Затем, в качестве примера:

library(lubridate) # for year(...) and wday(...) 
library(ggplot2) 
# random dates around Jun 1, across 5 years... 
set.seed(123) 
lace <- data.frame(date=as.Date(rnorm(1000,sd=50)+365*(0:4),origin="2008/6/1")) 
lace$year <- factor(year(lace$date)) 
lace$dow <- wday(lace$date, label=T) 
# This creates the histograms... 
ggplot(lace) + 
    geom_histogram(aes(x=dow, fill=year)) +  # fill color by year 
    facet_grid(~year) +       # facet by year 
    theme(axis.text.x=element_text(angle=90)) # to rotate weekday names... 

Производит это: enter image description here

+0

очень полезно спасибо –

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