pivot_longer в R и указать тип столбца имени столбца, который будет дата - PullRequest
0 голосов
/ 02 мая 2020

Я пытаюсь проанализировать некоторые данные о коронавирусе, чтобы посмотреть случаи за день и тому подобное. Я нашел данные на веб-сайте CD C, и они представлены в не аккуратном формате, каждая дата имеет свой собственный столбец. Я использую pivot_longer для транспонирования данных. Следующее работает для чтения данных, их поворота и использования mutate для изменения типа данных столбца даты на date.

library(tidyverse)
library(lubridate)
deaths = read_csv("https://usafactsstatic.blob.core.windows.net/public/data/covid-19/covid_deaths_usafacts.csv")

deaths2 = deaths %>%
  rename(county = `County Name`, state = State) %>%
  pivot_longer(-c(countyFIPS, county, state, stateFIPS), names_to = "date", values_to = "deaths_cumulative") %>%
  mutate(date = mdy(date)) %>%
  select(state, county, date, deaths_cumulative)

Однако я пытаюсь использовать аргумент names_ptypes в pivot_longer, чтобы указать тип данных на этом этапе. Если я сделаю следующее, столбец даты в конце концов получит тип данных date, но все значения в столбце - NA. Я не уверен, что происходит. Возможно, ему нужен формат, но Date не позволяет, насколько я могу судить. Есть ли способ сделать это?

deaths2 = deaths %>%
  rename(county = `County Name`, state = State) %>%
  pivot_longer(-c(countyFIPS, county, state, stateFIPS), names_to = "date", values_to = "deaths_cumulative", names_ptypes = list(date = Date())) %>%
  select(state, county, date, deaths_cumulative)

1 Ответ

0 голосов
/ 02 мая 2020

Я думаю, что это то, что вы ищете:

library(tidyverse)
deaths2 <- deaths %>% 
  as_tibble() %>% 
  gather(Xdate, deaths, -countyFIPS, - County.Name, - State, - stateFIPS) %>% 
  mutate(DATE = lubridate::as_date(lubridate::mdy(str_sub(Xdate,2)))) %>% 
  select(- Xdate)

mdy переформатирует строку даты, чтобы as_date мог ее принудительно привести.

...