#r #date
#r #Дата
Вопрос:
У меня есть этот вектор даты:
dput(date)
c("1981035", "1981036", "1981037", "1981038", "1981039", "1981040",
"1981041", "1981042", "1981043", "1981044", "1981045", "1981046",
"1981047", "1981048", "1981049", "1981050", "1981051", "1981052",
"1982001", "1982002", "1982003", "1982004", "1982005", "1982006",
"1982007", "1982008", "1982009", "1982010", "1982011", "1982012",
"1982013", "1982014", "1982015", "1982016", "1982017", "1982018",
"1982019", "1982020", "1982021", "1982022", "1982023", "1982024",
"1982025", "1982026", "1982027", "1982028", "1982029", "1982030",
"1982031", "1982032", "1982033", "1982034", "1982035", "1982036",
"1982037")
Он задается как yearweek [неделя 1 охватывает дни года с 1 по 7]. Я хочу преобразовать это в формат год-месяц-день и попробовал следующее, но это не сработало:
as.Date(date, "%Y%U")
Комментарии:
1. Даты представлены в неоднозначном формате. Что означает пятая цифра (0)? Это просто разделитель? И какой день вы хотите для каждого элемента? Первый день недели?
2. Да, пятая цифра бесполезна, и я хочу первый или последний день недели (это не имеет значения).
3. Похоже, что они могут быть в
%Y%U%w
формате или аналогичном формате с днем недели в конце, что объясняет дополнительную цифру. Но, как отмечает @VictorNautica, формат неоднозначен.4. Да, мы можем игнорировать пятую цифру.
Ответ №1:
Вы должны назначить для них день недели. В противном случае он не может быть преобразован в определенную дату, поскольку он относится к диапазону дат. Выбрав день 0 с %w
помощью , то есть воскресенье, вы можете использовать приведенный ниже код.
as.Date(paste0(da, '0'), format = '%Y0%U%w')
Примечание: Предполагается, что пятая цифра не содержит информации. Мне это кажется странным, но это правильно в соответствии с OP.
Редактировать: @Kath указал, что, вероятно, имеет смысл представлять данные в формате %Y%w%U, чтобы вы могли достичь того же результата с помощью более простого кода ниже
as.Date(da, format = '%Y%w%U')
Комментарии:
1. Вы могли бы также просто сказать
as.Date(da, "%Y%w%U")
, используете ли вы воскресенье в любом случае?2. Да, это идея получше