Вот мой начальный пример данных из Excel (в следующий раз я собираюсь рассказать моему клиенту об аккуратных данных):
date_string
3/13, 3/17, 3/20
4/13
5/12, 5/20
Я довольно близко к тому, что хочу с этим:
library(tidyverse)
library(stringr)
data <- str_split_fixed(data$date_string, ",", 3)%>%
as_tibble() %>%
gather() %>%
filter(value != "")
тогда я остаюсь с этим:
key value
v1 3/13
v1 43203
v1 5/12
v2 3/17
v2 5/20
v3 3/20
Это достаточно хорошо, что я могу выполнить остальное форматирование и аранжировку в Excel, но чем больше я могу сделать в R, тем лучше, тем более, что мне придется делать все это снова в следующий раз, когда я обновлю конечный продукт , Я чувствую, что есть функция lubridate
, чтобы помочь мне с этим, но mdy
и date
продолжают возвращать ошибки.
Значение, которое я хочу, это приведенная выше таблица, но в формате m / d / y.
Обновление
Основываясь на ответе ниже, я добавил следующее. Это работает, но, вероятно, есть более элегантный способ сделать это:
data <- str_split_fixed(data$date_string, ",", 3)%>%
as_tibble() %>%
gather() %>%
filter(value != "") %>%
mutate(value =
if_else(
str_detect(value, "/") == T,
paste0(value, "/2018"),
as.character(as_date(as.numeric(value), origin = "1900-01-01")))) %>%
mutate(value =
if_else(
str_detect(value, "/") == T,
mdy(value),
ymd(value)))
Я получаю эти предупреждения, но мне нужны именно эти данные:
1. In as_date(as.numeric(value), origin = "1900-01-01") :
NAs introduced by coercion
2. 1 failed to parse.
3. 5 failed to parse.
Не уверен, как он "не смог выполнить синтаксический анализ", когда последний столбец "value" возвращается в качестве переменной даты. , ,