Я пытаюсь сделать следующее векторизованное манипулирование столбцом даты в моих данных. Я нашел очень не элегантное решение и уверен, что есть более чистое и аккуратное решение. Пример игрушки:
index <- c(1,2)
input <- c('11-9-2019', '11/01/2019-01/31/2020')
output <- c('11-9-2019', '11-01-2019')
df_in <- data.frame('index'=index, 'data'=input)
df_out <- data.frame('index' =index, 'data'=output)
Я могу решить проблему с помощью sapply следующим образом:
df_out$data <- sapply(range(1:2), function(x) ifelse(str_length(df_in$data[x]) > 12,
str_sub(df_in$data[x], -10, -1),
df_in$data[x]))
df_out$data <- str_replace_all(df_out$data, '/', '-')
df_out$data
Есть ли способ сделать это а) с одной векторизованной линией, б), не полагаясь на строковые индексы, как я делал в str_sub?
Спасибо!