首页 > 解决方案 > 更改数据框中的所有日期格式

问题描述

我对 R 编程非常陌生并且有点卡在这个:我有一个数据框,我想检查任何行/列中是否有任何日期格式的值,应该只删除时间部分。例如,日期字符串"2015-01-02 10:15:44"应更改为"10:15:44"

我知道,这是一种非常新手的方法,但这是我试图获取所有值的子字符串的方法。

id<-c(1,2,3,4)
time1<-c("2015-01-02 10:15:44","NA","2015-11-12 00:15:44","2015-01-02 12:15:14")
time2<-c("NA", "2015-01-02 10:15:44","NA","2015-11-12 00:15:44")
..
..
timen ....
print(df)

df<-data.frame(id,time1, time2,..., timen)
df[1:4 ,2: ncol(df)] <- substring(df[1:4 ,2: ncol(df)], 12)
print(df)

有人可以建议出路吗?

标签: rdatetimedataframedate-format

解决方案


你试过这个包吗lubridate

time_cols <- c("time1", "time2")

df[time_cols] <- apply(df[time_cols], 2, 
                       function(col){
                          format(lubridate::ymd_hms(col), "%H:%M:%S")
                       })
df
#     id    time1    time2
#   1  1 10:15:44     <NA>
#   2  2     <NA> 10:15:44
#   3  3 00:15:44     <NA>
#   4  4 12:15:14 00:15:44

推荐阅读