Конвертировать номер недели в дату
16803 просмотра
3 ответа
У меня есть фрейм данных в R с неделей года, которые я хотел бы преобразовать в дату. Я знаю, что должен выбрать год и день недели, поэтому я фиксирую эти значения в 2014 и 1. Преобразование этого в дату кажется простым:
as.Date(paste(2014,df$Week,1,sep=""),"%Y%U%u")
Но этот код работает, только если неделя больше 9. Неделя 1 - 9 возвращает NA. Если я изменю неделю на 01,02,03 ... она все равно вернет NA.
Кто-нибудь видит, чего мне не хватает?
Автор: Aaron Soderstrom Источник Размещён: 13.11.2019 11:53Ответы (3)
22 плюса
as.Date
вызывает от 1 до 9 как NA, так как он ожидает две цифры для номера недели и не может правильно проанализировать его.
Чтобы исправить это, добавьте немного - чтобы разделить вещи:
as.Date(paste(2014, df$Week, 1, sep="-"), "%Y-%U-%u")
Автор: jeremycg
Размещён: 09.09.2015 03:27
7 плюса
Альтернативное решение - использовать арифметику даты из lubridate
пакета:
lubridate::ymd( "2014-01-01" ) + lubridate::weeks( df$Week - 1 )
Это -1
необходимо, потому что 2014-01-01
уже неделя 1. Другими словами, мы хотим:
df$Week == 1
сопоставить2014-01-01
(что естьymd("2014-01-01") + weeks(1-1)
)df$Week == 2
сопоставить2014-01-08
(что естьymd("2014-01-01") + weeks(2-1)
)- и так далее.
0 плюса
It will be like using 2nd year = (week-52), 3rd year = (week -104)...so on
for(i in 1:456548)
{
if (train[i,2] > 0 & train[i,2] <53)
{
train["weekdate"] <- as.Date(paste(2016, train$week, 1, sep="-"), "%Y-%U-%u")
}
if (train[i,2] > 52 & train[i,2] <105)
{
train["weekdate"] <- as.Date(paste(2017, (train$week-52), 1, sep="-"), "%Y-%U-%u")
}
if (train[i,2] > 104 & train[i,2] <150)
{
train["weekdate"] <- as.Date(paste(2018, (train$week-104), 1, sep="-"), "%Y-%U-%u")
}
}
Автор: user2640679
Размещён: 15.12.2018 06:04
Вопросы из категории :
- r Как получить доступ к последнему значению в векторе?
- r Пакеты оптимизации для R
- r Есть ли у R такие операторские операции, как Perl qw ()?
- r Библиотека / инструмент для рисования тройных / треугольных графиков
- r Участки без заголовков / надписей в R
- r Расчет скользящей средней
- r Режим Emacs ESS - вкладка для области комментариев
- r Преобразование данных из многих строк во многие столбцы
- r Проверить, содержит ли вектор данный элемент
- r Поиск всех позиций для нескольких элементов в векторе
- as.date Каковы форматы «стандартной однозначной даты» для преобразования строки в дату в R?
- as.date Конвертировать номер недели в дату
- as.date Как найти разницу в часах между датами в R
- as.date Как мне преобразовать приведенную ниже строку как дату-время в R?
- as.date Change datatype from factor to date
- as.date Преобразовать на сегодняшний день из нетрадиционного формата в R
- as.date Превращение строк даты в пригодные для использования объекты даты в R
- as.date R import csv потеряет значение даты (дня)
- as.date Команда as.Date в R возвращает NA
- as.date Почему нельзя применять as.Date () к «общим» форматированным переменным Excel?