Как извлечь Час (в UTC времени) из даты и времени - PullRequest
1 голос
/ 31 октября 2019

Учитывая местное время fromLocalTime и state Я хочу создать столбец с именем hourUTC, который возвращает только час (по времени UTC)

Итак, учитывая данные:

> dput(head(smart1,10))
structure(list(fromLocalTime = structure(c(1567086360, 1567604820, 
1568037120, 1571344680, 1565797140, 1568641740, 1565983980, 1567100520, 
1569963060, 1563888180), class = c("POSIXct", "POSIXt"), tzone = ""), 
    state = c("GA", "GA", "GA", "GA", "TX", "TX", "TX", "TX", 
    "TX", "FL")), class = c("tbl_df", "tbl", "data.frame"), row.names = c(NA, 
-10L))
> data.frame(smart1)
         fromLocalTime state
1  2019-08-29 09:46:00    GA
2  2019-09-04 09:47:00    GA
3  2019-09-09 09:52:00    GA
4  2019-10-17 16:38:00    GA
5  2019-08-14 11:39:00    TX
6  2019-09-16 09:49:00    TX
7  2019-08-16 15:33:00    TX
8  2019-08-29 13:42:00    TX
9  2019-10-01 16:51:00    TX
10 2019-07-23 09:23:00    FL

Я хочу вывод, подобный следующему:

> data.frame(smart1)
         fromLocalTime state hourUTC
1  2019-08-29 09:46:00    GA      13
2  2019-09-04 09:47:00    GA      13
3  2019-09-09 09:52:00    GA      13
4  2019-10-17 16:38:00    GA      20
5  2019-08-14 11:39:00    TX      16
6  2019-09-16 09:49:00    TX      14
7  2019-08-16 15:33:00    TX      20
8  2019-08-29 13:42:00    TX      18
9  2019-10-01 16:51:00    TX      21
10 2019-07-23 09:23:00    FL      13

В Excel я использую эту формулу для получения часового пояса на основе состояния. Я знаю, что это не все, но для моих данных этого будет достаточно: = if (ISNUMBER (SEARCH (A1, "WA, OR, CA, NV")), "Pacific", if (ISNUMBER (SEARCH (A1, ")MT, ID, WY, UT, CO, AZ, НМ "))," Горный "если (ISNUMBER (SEARCH (A1," ND, SD, NE, KS, Оклахома, Техас, Миннесота, Айова, Миссури, Арканзас,LA, WI, IL, TN, MS, AL "))," Центральный "если (ISNUMBER (SEARCH (A1," MI, IN, OH, PA, штат Нью-Йорк, Вермонт, Мэн, Нью-Гемпшир, Массачусетс, Род-Айленд, Коннектикут,Кентукки, Нью-Джерси, Делавэр, Мэриленд, Западная Вирджиния, Вирджиния, Северная Каролина, Южная Каролина, Джорджия, Флорида, DC "))," Восточный», если (IsNumber (SEARCH (А1, "АК")), "Аляска", если (ISNUMBER(SEARCH (A1, "HI")), "Гавайи", ""))))))

1 Ответ

1 голос
/ 31 октября 2019

Используя предоставленную таблицу, если вы просто пытаетесь приблизиться (и не беспокоиться о переходе на летнее время), вы можете сделать что-то вроде

smart1 %>% mutate(
  approxUTC = lubridate::hour(fromLocalTime) + case_when(
      state %in% c("WA","OR","CA","NV")~8,
      state %in% c("MT","ID","WY","UT","CO","AZ","NM")~7,
      state %in% c("ND","SD","NE","KS","OK","TX","MN","IA","MO","AR","LA","WI","IL","TN","MS","AL")~6,
      state %in% c("MI","IN","OH","PA","NY","VT","ME","NH","MA","RI","CT","KY","NJ","DE","MD","WV","VA","NC","SC","GA","FL","DC")~5,
      state %in% c("AK")~9,
      state %in% c("HI")~10,
      TRUE ~ NA_real_))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...