将列值转换为R中的日期

dairelix

已阅读并成功应用以下主题

将指定的列转换为R中的日期 R将字符向量值转换为Date值

我有一列名为的值dates,由于某种原因,我无法使用将该转换为实际日期as.Dates它位于名为的数据框中general

我试图将其提取到另一个对象,但是我所得到的只是值列表

[[1]]
 [1] NA           "43897"      NA           "44004"      "23/05/2020" "25/06/2020" "25/06/2020"
 [8] "43837"      "43989"      "43868"      "43989"      "18/07/2020" NA           "23/06/2020"
[15] "30/06/2020" "21/07/2020" "31/07/2020" "24/06/2020" "28/06/2020" "17/06/2020" "43989"     
[22] "16/06/2020" NA           "43896"      "23/06/2020" "44018"      "31/05/2020" "28/05/2020"
[29] "44081"      "25/06/2020" NA           NA           "27/06/2020" "43926"      "17/05/2020"
[36] NA           "43956"      "20/06/2020" "24/04/2020" "24/03/2020" "22/02/2020" NA          
[43] NA           NA           NA           NA           NA           NA           NA          
[50] NA           NA           NA           "44030"      "43837"      "18/07/2020"

我试过了

as.Date(general$dates,"%Y-%m-%d")

哪个返回

 [1] NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
[32] NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA

甚至

lapply(general$dates,as.Date,origin = "1970-01-01")
Error in charToDate(x) : 
  character string is not in a standard unambiguous format

任何光将不胜感激。

阿克伦

由于有两种格式,我们可以grep用来创建索引并单独进行。

# // create an index to separate the numeric only dates
i1 <- grepl('^\\d+$', dates)
dates1 <- as.Date(rep(NA, length(dates)))
# // specify the origin - seems like 1899 instead of 1970
dates1[i1] <-  as.Date(as.numeric(dates[i1]), origin = '1899-12-31')
# // assign the other dates as well with the format
dates1[!i1] <- as.Date(dates[!i1], "%d/%m/%Y")
dates1
[1] NA           "2020-03-08" NA           "2020-06-23" "2020-05-23" "2020-06-25" "2020-06-25" "2020-01-08" "2020-06-08"
[10] "2020-02-08" "2020-06-08" "2020-07-18" NA           "2020-06-23" "2020-06-30" "2020-07-21" "2020-07-31" "2020-06-24"
[19] "2020-06-28" "2020-06-17" "2020-06-08" "2020-06-16" NA           "2020-03-07" "2020-06-23" "2020-07-07" "2020-05-31"
[28] "2020-05-28" "2020-09-08" "2020-06-25" NA           NA           "2020-06-27" "2020-04-06" "2020-05-17" NA          
[37] "2020-05-06" "2020-06-20" "2020-04-24" "2020-03-24" "2020-02-22" NA           NA           NA           NA          
[46] NA           NA           NA           NA           NA           NA           NA           "2020-07-19" "2020-01-08"
[55] "2020-07-18"

或者,如果将lubridate,和一起使用dplyr则会更容易

library(dplyr)
library(lubridate)
coalesce(as_date(as.numeric(dates)), dmy(dates))

originas_date应相应地更改

数据

dates <- c(NA, "43897", NA, "44004", "23/05/2020", "25/06/2020", "25/06/2020", 
"43837", "43989", "43868", "43989", "18/07/2020", NA, "23/06/2020", 
"30/06/2020", "21/07/2020", "31/07/2020", "24/06/2020", "28/06/2020", 
"17/06/2020", "43989", "16/06/2020", NA, "43896", "23/06/2020", 
"44018", "31/05/2020", "28/05/2020", "44081", "25/06/2020", NA, 
NA, "27/06/2020", "43926", "17/05/2020", NA, "43956", "20/06/2020", 
"24/04/2020", "24/03/2020", "22/02/2020", NA, NA, NA, NA, NA, 
NA, NA, NA, NA, NA, NA, "44030", "43837", "18/07/2020")

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

将值转换为R中的日期

来自分类Dev

将“日期时间”列中的值转换为通用格式

来自分类Dev

如何将列值转换为日期以在R中绘制ggplot

来自分类Dev

将R中的空值转换为NULL-处理日期列

来自分类Dev

将字符串转换为R中的日期值

来自分类Dev

将整个列从字符转换为R中的日期类

来自分类Dev

将日期列转换为 r 中的行 ID

来自分类Dev

将列值转换为R中的各个列

来自分类Dev

将数组的列转换为R中的单个值的列

来自分类Dev

将列值转换为R中的各个列

来自分类Dev

R将日期列转换为公历

来自分类Dev

将行值转换为R中的列

来自分类Dev

根据列中的值将R转换为宽格式

来自分类Dev

将多列值转换为 R 中的分位数

来自分类Dev

将数字转换为R中的日期

来自分类Dev

将向量转换为R中的日期

来自分类Dev

R将行值转换为列

来自分类Dev

将字符串日期列转换为R中的标准日期

来自分类Dev

熊猫数据框:将列中的日期转换为行中的值

来自分类Dev

熊猫数据框:将列中的日期转换为行中的值

来自分类Dev

如何将sqlite日期转换为R中的日期

来自分类Dev

将日期转换为R中的单个日期和时间

来自分类Dev

如何将sqlite日期转换为R中的日期

来自分类Dev

按日期将两列DataFrame转换为值计数

来自分类Dev

将列中的日期与时间转换为R中的字符为星期

来自分类Dev

将数据框列中的日期转换为新列

来自分类Dev

如何创建使用应用(或创建函数)以跨多个日期列将字符日期转换为R中的日期

来自分类Dev

将行转换为R中的列

来自分类Dev

将行转换为R中的列