Во-вторых, преобразуйте их, указав формат (в вашем случае m / d / y):
ои исходные данные из 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
продолжайте возвращать ошибки.
Значение, которое я хочу, это таблица выше, но в формате м / д / у.
Обновить
Основываясь на ответе ниже, я добавил следующее. Это работает, но, вероятно, есть более элегантный способ сделать это:
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.
Не уверен, как он "не смог разобрать", когда последний столбец "значение" возвращается в качестве переменной даты. , ,