r - 将字符转换为日期的函数

标签 r class date

我想编写一个函数,该函数将接受具有类字符的列向量,将它们转换为日期,并输出数据帧。当我运行它时,它会输出数据帧列表,但不会发生转换。我可以重写下面的内容来实现这一目标吗?上下文是我可能有很多想要转换的字符列,并且拥有一个函数似乎是实现此目的的最佳方法。

library(tidyverse)
date1<-c("2021-01-05","2021-01-06","2021-01-07","2021-01-08","2021-01-09")
date2<-c("2021-02-05","2021-02-06","2021-02-07","2021-02-08","2021-02-09")

df<-data.frame(date1,date2,stringsAsFactors = FALSE)

#the vector of columns to convert to date format
datecols<-c("date1","date2")

datefunc<-function(a){
  df2<-df%>%
    mutate(a=as.Date(a,"%Y-%m-%d" ))
  return(df2)}

df<-lapply(datecols,datefunc)

最佳答案

如果日期具有模式'Y-%m-%d',则无需指定格式。您可以编写一个简单的函数,将单个列更改为日期,并使用 lapply 将其应用于 datecols

datefunc<-function(a) as.Date(a)
datecols<-c("date1","date2")

df[datecols] <- lapply(df[datecols], datefunc)
df

#       date1      date2
#1 2021-01-05 2021-02-05
#2 2021-01-06 2021-02-06
#3 2021-01-07 2021-02-07
#4 2021-01-08 2021-02-08
#5 2021-01-09 2021-02-09

str(df)
#'data.frame':  5 obs. of  2 variables:
# $ date1: Date, format: "2021-01-05" "2021-01-06" "2021-01-07" ...
# $ date2: Date, format: "2021-02-05" "2021-02-06" "2021-02-07" ...

关于r - 将字符转换为日期的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67195393/

相关文章:

R 删除第一个和最后一个 x % 的行

python - 为什么 R 的 read.csv() 可以从 GitLab URL 读取 CSV 而 pandas 的 read_csv() 不能?

java - 使用接口(interface)而不是类来定义泛型

mysql - 在 MySQL 中存储多年可用日期的最佳方式

java - 从年,月,日创建java日期对象

R:如果值在 n 个元素后重复,则更改数据框中的行

R:基于条件的正则表达式第一次出现

java - java中如何关闭一个类

c++ - 在初始化列表中使用静态类成员作为参数

html - Material-UI 选择器 : Display Date as (M, DD, YYYY) -> (2019 年 4 月 17 日)