У меня есть csv exchange_rates, который выглядит так:
> head(exchange_rates_1)
# A tibble: 6 x 4
Date USD_by_INR GBP_by_INR EUR_by_INR
<dbl> <dbl> <dbl> <dbl>
1 20061204 44.6 88.2 59.4
2 20061205 45.1 89.3 60.2
3 20061206 44.7 88.0 59.4
4 20061207 44.7 87.9 59.4
5 20061208 44.7 87.6 59.3
6 20061211 44.8 87.4 59.1
И теперь я хочу преобразовать столбец «Дата» в реальную дату, например, в формате «%Y-%M-%D», цель этой операции будет состоять в том, чтобы агрегировать ее за недели...
Если кто-то знает способ агрегировать текущие значения даты в неделях, было бы здорово, в противном случае, если бы кто-то знал, как перевести текущие значения в описанный формат, было бы здорово.
Сначала мы преобразуем «Дату» в character
, а затем используем as.Date
с format
как %Y%m%d
exchange_rate_1$Date <- as.Date(as.character(exchange_rate_1$Date), "%Y%m%d")
Если нам нужно агрегировать по «неделю»
library(dplyr)
exchange_rate_1 %>%
mutate(Date = as.Date(as.character(Date))) %>%
group_by(YearWeek = format(Date, "%Y %W")) %>%
summarise(across(ends_with('INR'), ~ sum(., na.rm = TRUE)))
В ответ на ваш второй вопрос простой способ — просто перевести текущие значения в «нормальные» даты — использовать пакет lubridate
.
Во-первых, давайте поместим ваши даты в вектор:
dates <- c(20061204, 20061205, 20061206, 20061207, 20061208, 20061211)
> dates
[1] 20061204 20061205 20061206 20061207 20061208 20061211
Теперь, используя пакет lubridate
, используйте функцию ymd
, чтобы преобразовать их. ymd
используется в этом случае, потому что ваши данные хранятся в формате год-месяц-дата. Если бы ваши данные были организованы по-другому, вы могли бы использовать другие конфигурации.
dates2 <- lubridate::ymd(dates)
dates2
[1] "2006-12-04" "2006-12-05" "2006-12-06" "2006-12-07" "2006-12-08" "2006-12-11"
Для получения дополнительной информации о lubridate
вы можете посетить веб-сайт: https://lubridate.tidyverse.org/
Круто, сэр! Большое спасибо за прекрасную работу!