2013-12-09 8 views
2

Существуют ли встроенные функции, которые могут использоваться для объекта фрейма данных для генерации переменных в классе Date временных рядов для создания дня недели, месяца , Год, Неделя Года и т. Д. В R?День недели, месяц, год, неделя года в R

weekdays, months, quarters, функции в базовом пакете генерируют вывод текста, глядя на числовой вывод для обозначения того, что 3/5/2012, например, в пятницу, 3-й день месяца, 1 неделя месяц и 63 день года и т. д.

ответ

4

Вы получаете несколько из них только от POSIXlt со своим странным соглашением. Год должен быть 1900, месяц находится в диапазоне от 0 до 11, но вы получаете будний день и день года.

R> dd <- as.Date("2012-05-03") 
R> as.POSIXlt(dd) 
[1] "2012-05-03 UTC" 

Тогда

R> unclass(as.POSIXlt(dd)) 
$sec 
[1] 0 

$min 
[1] 0 

$hour 
[1] 0 

$mday 
[1] 3 

$mon 
[1] 4 

$year 
[1] 112 

$wday 
[1] 4 

$yday 
[1] 123 

$isdst 
[1] 0 

attr(,"tzone") 
[1] "UTC" 
R> 
+0

Спасибо за обмен Дирк. Итак, если у меня есть data.frame в формате «Дата», я должен преобразовать в POSIXlt, а затем преобразовать данные обратно в формат data.frame/«Date»? – jessica

+0

Я обычно просто извлекаю информацию о релеванте (скажем, день недели) в новую колонку. Сохраните дату как тип «Дата» и вычислите, что вам нужно рядом с ней. –

+0

Я вижу. У меня обычно возникает проблема с созданием моих данных POSIXlt и xts, потому что, когда я часто использую команду 'fix', и нет способа просмотра данных, как в фрейме данных. Знаете ли вы о каких-либо методах, которые позволили бы мне использовать эти пакеты временных рядов и в то же время видеть наборы данных в виде серии датированных строк с переменными столбцами, запущенными слева направо. Каждый раз, когда я пытаюсь увидеть свои данные в формате xts, я получаю этот блокнот с данными, расположенными в интуитивно понятном формате. Поблагодарите вашу помощь в этом Дирк и JB. – jessica

2

Есть несколько вариантов, которые я могу думать.

Во-первых, вы можете использовать класс as.POSIXlt, чтобы вы могли подмножать такие вещи, как df$date$yday. as.POSIXlt() включает элементы дат в виде списка под ним, к которому можно получить доступ таким образом.

Кроме того, пакет lubridate имеет такие функции, как

yday(x) 
wday(x) 
mday(x) 
2

Вы можете использовать lubridate пакет, чтобы сделать много с датами.

Из файла справки: Lubridate предоставляет инструменты, облегчающие синтаксический анализ и управление датами.

Например:

> library(lubridate) 
> d <- today() 
> d 
[1] "2014-04-29" 
> day(d) 
[1] 29 
> month(d) 
[1] 4 
> year(d) 
[1] 2014 
> week(d) 
[1] 18 
> weekdays(d) 
[1] "Tuesday" 
> days_in_month(d) 
Apr 
30 

Я предпочитаю его встроенные функции, поскольку она имеет много дат сплайсинга, отливка и арифметические функции.

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