dplyr 基于数据类型的条件变异

时间:2021-05-25 11:33:58

标签: r dplyr lubridate

我只想转换文本格式的日期,否则不转换。我需要这个,因为有时我以日期格式获取数据;有时以文本格式。这是我的玩具数据。

library(tidyverse)
library(lubridate)

toy_df <- tibble(date = seq(as.Date("2021/1/1"), as.Date("2021/1/5"), "days")) %>% 
  mutate(date = as.character(date))   

当我尝试这个时,它不起作用。

toy_df %>% mutate(date = if_else(is.Date(date), date, ymd(date)))

我应该如何解决这个问题?

1 个答案:

答案 0 :(得分:2)

is.Date 返回一个值,因此使用 if/else 而不是矢量化 ifelse/if_else -

library(tidyverse)
library(lubridate)

toy_df %>% mutate(date = if(is.Date(date)) date else ymd(date))

#   date      
#  <date>    
#1 2021-01-01
#2 2021-01-02
#3 2021-01-03
#4 2021-01-04
#5 2021-01-05

如果您的数据格式相同,则无需检查条件。

toy_df %>% mutate(date = ymd(date))
相关问题