首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将字符串转换为日期,但得到奇怪的错误代码

将字符串转换为日期,但得到奇怪的错误代码
EN

Stack Overflow用户
提问于 2021-03-30 22:29:22
回答 2查看 32关注 0票数 0

我有一个日期变量,如下所示:

代码语言:javascript
复制
df<-structure(list(y = structure(c(66L, 66L, 15L, 66L, 17L, 66L, 
66L, 66L, 66L, 35L, 66L, 33L, 11L, 66L, 38L, 66L, 46L, 66L, 66L, 
66L, 66L, 66L, 66L, 19L, 13L, 66L, 66L, 66L, 66L, 66L, 66L, 66L, 
66L, 66L, 47L, 66L, 1L, 25L, 28L, 44L, 66L, 66L, 66L, 66L, 66L, 
66L, 66L, 66L, 66L, 66L, 51L, 66L, 66L, 66L, 66L, 66L, 66L, 54L, 
66L, 66L, 33L, 66L, 66L, 66L, 66L, 66L, 53L, 53L, 66L, 55L, 55L, 
55L, 54L, 55L, 56L, 55L, 66L, 66L, 66L, 66L, 66L, 66L, 66L, 66L, 
66L, 66L, 66L, 66L, 66L, 66L, 60L, 66L, 66L, 66L, 60L, 66L, 2L, 
42L, 66L, 66L, 66L, 66L, 66L, 66L, 66L, 66L, 6L, 66L, 16L, 66L, 
66L, 66L, 66L, 66L, 66L, 66L, 66L, 66L, 66L, 66L, 66L, 8L, 66L, 
66L, 66L, 66L, 66L, 66L, 66L, 66L, 66L, 66L, 66L, 66L, 66L, 65L, 
66L, 66L, 66L, 63L, 66L, 66L, 63L, 66L, 66L, 66L, 66L, 64L, 66L, 
66L, 66L, 66L, 66L, 66L, 66L, 66L, 66L, 66L, 66L, 66L, 66L, 66L, 
66L, 66L, 66L, 66L, 39L, 66L, 66L, 66L, 66L, 52L, 5L, 66L, 33L, 
66L, 66L, 25L, 33L, 66L, 41L, 25L, 25L, 61L, 66L, 12L, 12L, 66L, 
66L, 66L, 66L, 66L, 66L, 66L, 66L, 66L, 66L, 66L, 16L, 3L, 18L, 
18L, 66L, 66L, 66L, 66L, 66L, 66L, 66L, 66L, 16L, 62L, 66L, 62L, 
66L, 18L, 66L, 66L, 66L, 33L, 13L, 66L, 66L, 66L, 66L, 66L, 66L, 
66L, 66L, 43L, 10L, 66L, 66L, 9L, 21L, 22L, 23L, 24L, 27L, 26L, 
48L, 40L, 20L, 32L, 29L, 14L, 36L, 66L, 66L, 31L, 66L, 49L, 45L, 
4L, 66L, 8L, 66L, 66L, 66L, 66L, 66L, 66L, 66L, 66L, 66L, 66L, 
66L, 66L, 30L, 66L, 66L, 66L, 66L, 57L, 66L, 66L, 66L, 66L, 28L, 
66L, 66L, 66L, 66L, 66L, 66L, 66L, 66L, 66L, 66L, 66L, 66L, 66L, 
41L, 41L, 19L, 66L, 16L, 66L, 66L, 7L, 66L, 66L, 34L, 66L, 66L, 
66L, 66L, 33L, 66L, 66L, 66L, 50L, 58L, 66L, 37L, 66L, 66L, 66L, 
66L, 66L, 66L, 66L, 66L, 66L, 66L, 66L, 59L), .Label = c("1966-1-1", 
"1976-1-1", "1978-1-1", "1993-1-1", "1999-1-1", "2002-1-1", "2002-5-1", 
"2005-1-1", "2006-1-1", "2006-12-6", "2007-1-1", "2007-6-8", 
"2009-1-1", "2009-7-2", "2010-5-1", "2011-1-1", "2011-3-1", "2011-9-27", 
"2012-1-1", "2012-1-10", "2013-1-1", "2013-4-1", "2013-5-1", 
"2014-1-1", "2015-1-1", "2015-11-1", "2015-5-1", "2016-1-1", 
"2016-12-10", "2016-3-1", "2016-6-30", "2016-9-12", "2017-1-1", 
"2017-1-27", "2017-11-1", "2017-11-17", "2017-2-2", "2017-7-1", 
"2017-9-1", "2017-9-12", "2018-1-1", "2018-12-14", "2018-12-3", 
"2018-4-1", "2018-6-1", "2018-9-14", "2019-2-1", "2019-2-25", 
"2019-2-4", "2019-3-19", "2019-3-21", "2019-6-1", "2019-7-15", 
"2019-7-17", "2019-7-22", "2019-7-23", "2019-8-12", "2020-1-9", 
"2020-12-3", "2020-2-5", "2020-7-1", "2020-8-20", "2021-1-26", 
"2021-2-2", "2021-2-21", "NA-1-1"), class = "factor")), class = "data.frame", row.names = c(NA, 
-327L))

我现在尝试将其格式化为日期,因此我使用以下代码:

代码语言:javascript
复制
df<-as.Date(df)

然而,我得到了错误代码Error in as.Date.default(y) : do not know how to convert 'y' to class “Date”,我做错了什么?或者是y的哪个部分导致了这个错误?我找不到答案,有什么建议吗?对于year==NA,日期将为NA。我以前在类似的问题上使用过这些代码,没有任何问题。所以我认为是数据部分有一些问题。但是我不确定是哪条记录导致了这个错误。如何识别导致此错误的原因?非常感谢。

更新:

代码语言:javascript
复制
df2<-structure(list(df2 = structure(c(43L, 38L, 30L, 38L, 32L, 92L, 
38L, 38L, 38L, 67L, 79L, 42L, 22L, 70L, 73L, 24L, 67L, 93L, 70L, 
22L, 79L, 69L, 69L, 36L, 25L, 15L, 9L, 63L, 79L, 97L, 92L, 91L, 
63L, 25L, 88L, 79L, 2L, 45L, 56L, 91L, 79L, 104L, 63L, 28L, 79L, 
56L, 96L, 76L, 56L, 45L, 50L, 83L, 83L, 56L, 83L, 84L, 116L, 
116L, 56L, 98L, 56L, 8L, 98L, 42L, 42L, 42L, 42L, 42L, 116L, 
116L, 116L, 116L, 116L, 117L, 116L, 117L, 11L, 120L, 121L, 121L, 
124L, 132L, 115L, 115L, 113L, 132L, 132L, 132L, 132L, 131L, 113L, 
130L, 130L, 113L, 119L, 79L, 3L, 86L, 6L, 83L, 84L, 138L, 123L, 
31L, 79L, 11L, 13L, 122L, 31L, 123L, 79L, 139L, 136L, 141L, 134L, 
141L, 141L, 83L, 38L, 148L, 148L, 17L, 36L, 79L, 98L, 98L, 98L, 
98L, 98L, 36L, 98L, 36L, 98L, 56L, 79L, 143L, 17L, 36L, 56L, 
56L, 56L, 123L, 123L, 36L, 56L, 140L, 143L, 140L, 142L, 11L, 
29L, 25L, 137L, 11L, 146L, 137L, 137L, 147L, 145L, 76L, 22L, 
76L, 76L, 11L, 144L, 144L, 77L, 16L, 79L, 98L, 79L, 98L, 10L, 
63L, 63L, 63L, 133L, 45L, 63L, 63L, 79L, 45L, 45L, 135L, 42L, 
23L, 23L, 23L, 23L, 135L, 127L, 135L, 79L, 128L, 23L, 34L, 34L, 
27L, 31L, 5L, 35L, 35L, 33L, 27L, 121L, 31L, 129L, 129L, 44L, 
25L, 31L, 27L, 27L, 27L, 34L, 35L, 34L, 119L, 99L, 36L, 25L, 
107L, 107L, 17L, 107L, 15L, 63L, 83L, 12L, 87L, 21L, 19L, 1L, 
20L, 38L, 39L, 40L, 42L, 51L, 48L, 71L, 78L, 37L, 62L, 59L, 26L, 
68L, 103L, 18L, 60L, 4L, 105L, 94L, 7L, 28L, 17L, 108L, 90L, 
74L, 108L, 108L, 102L, 108L, 108L, 49L, 41L, 54L, 47L, 58L, 57L, 
53L, 55L, 46L, 109L, 118L, 66L, 13L, 13L, 52L, 65L, 66L, 106L, 
110L, 110L, 80L, 82L, 79L, 85L, 85L, 112L, 112L, 112L, 79L, 79L, 
36L, 111L, 32L, 111L, 85L, 14L, 111L, 112L, 64L, 111L, 111L, 
36L, 36L, 63L, 56L, 56L, 99L, 108L, 125L, 123L, 72L, 89L, 101L, 
95L, 81L, 81L, 114L, 81L, 61L, 75L, 81L, 100L, 126L), .Label = c("1933-1-1", 
"1966-1-1", "1976-1-1", "1977-1-1", "1978-1-1", "1982-1-1", "1993-1-1", 
"1995-1-1", "1998-1-1", "1999-1-1", "2000-1-1", "2001-1-1", "2002-1-1", 
"2002-5-1", "2003-1-1", "2004-1-1", "2005-1-1", "2005-3-25", 
"2005-7-25", "2006-1-1", "2006-12-6", "2007-1-1", "2007-6-8", 
"2008-1-1", "2009-1-1", "2009-7-2", "2009-8-20", "2010-1-1", 
"2010-1-20", "2010-5-1", "2011-1-1", "2011-3-1", "2011-3-22", 
"2011-4-5", "2011-9-27", "2012-1-1", "2012-1-10", "2013-1-1", 
"2013-4-1", "2013-4-16", "2013-7-1", "2014-1-1", "2014-7-1", 
"2014-7-30", "2015-1-1", "2015-10-12", "2015-10-15", "2015-11-1", 
"2015-12-11", "2015-4-1", "2015-5-1", "2015-7-1", "2015-8-28", 
"2015-9-1", "2015-9-24", "2016-1-1", "2016-1-2", "2016-1-8", 
"2016-12-10", "2016-6-30", "2016-7-6", "2016-9-12", "2017-1-1", 
"2017-1-27", "2017-10-24", "2017-10-27", "2017-11-1", "2017-11-17", 
"2017-11-9", "2017-12-1", "2017-2-1", "2017-2-2", "2017-4-1", 
"2017-6-1", "2017-6-6", "2017-8-1", "2017-9-1", "2017-9-12", 
"2018-1-1", "2018-1-23", "2018-1-25", "2018-10-9", "2018-11-1", 
"2018-12-1", "2018-12-11", "2018-12-14", "2018-12-3", "2018-3-1", 
"2018-3-22", "2018-3-23", "2018-4-1", "2018-5-1", "2018-5-17", 
"2018-6-1", "2018-8-9", "2018-9-1", "2018-9-13", "2019-1-1", 
"2019-10-1", "2019-10-16", "2019-11-18", "2019-2-11", "2019-2-12", 
"2019-2-13", "2019-2-4", "2019-2-7", "2019-3-1", "2019-3-19", 
"2019-3-21", "2019-3-22", "2019-4-18", "2019-4-26", "2019-6-1", 
"2019-6-13", "2019-6-19", "2019-7-15", "2019-7-17", "2019-7-2", 
"2019-8-1", "2019-8-27", "2019-9-1", "2019-9-17", "2020-1-1", 
"2020-1-28", "2020-1-9", "2020-10-2", "2020-10-5", "2020-10-9", 
"2020-11-5", "2020-2-1", "2020-2-4", "2020-2-6", "2020-5-1", 
"2020-5-28", "2020-7-1", "2020-8-24", "2020-9-1", "2021-1-1", 
"2021-1-15", "2021-1-26", "2021-1-5", "2021-2-1", "2021-2-2", 
"2021-2-22", "2021-3-1", "2021-3-2", "2021-3-9", "NA-1-1"), class = "factor")), class = "data.frame", row.names = c(NA, 
-327L))
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-03-30 22:37:43

您只需要将列y转换为date。

代码语言:javascript
复制
as.Date(df$y, format = "%Y-%m-%d")
票数 3
EN

Stack Overflow用户

发布于 2021-03-31 01:38:16

使用lubridate

代码语言:javascript
复制
library(lubridate)
ymd(df$y)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66872926

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档