首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >R中的日期值至日期格式

R中的日期值至日期格式
EN

Stack Overflow用户
提问于 2018-05-06 03:58:56
回答 2查看 1.2K关注 0票数 0

我正在尝试更改从CSV文件导入的日期格式。date列的类是因子,但是当我想要使用"as.Date“函数时,它会提示我字符串格式不正确。

代码语言:javascript
运行
复制
> New_His_data$BirthDate[1]
[1] 36473
1378 Levels: 13-1-1990 13-1-1991 13-10-1959 13-10-1973 13-10-1979 13-10-1988 13-10-1989 13-10-1994 13-11-1963 13-11-1970 ... 36473
> as.Date(New_His_data$BirthDate[1],origin = "1899-12-30")
Error in charToDate(x) : 
  character string is not in a standard unambiguous format
> as.Date(strptime(New_His_data$BirthDate[1],"%d-%m-%Y"),origin ="1899-12-30")
[1] NA

当我使用值作为数字时,它可以正常工作

代码语言:javascript
运行
复制
> as.Date(36473,origin = "1899-12-30")
[1] "1999-11-09"

我试着找到一些关于这个问题的帖子,但我什么也找不到,请给我一个解决方案或一个解决方案的链接谢谢

EN

回答 2

Stack Overflow用户

发布于 2018-05-06 04:25:05

您的数据是作为factor变量传入的,可能是通过read.csv()传入的,如果没有设置StringsAsFactors=FALSE,则是相关变量。

没有转换为字符不能修复的问题。模拟示例:

代码语言:javascript
运行
复制
R> v <- factor(c("13-1-1990", "13-1-1991", "13-10-1959")) # your first three
R> v
[1] 13-1-1990  13-1-1991  13-10-1959
Levels: 13-1-1990 13-1-1991 13-10-1959
R> 
R> d <- as.Date(as.character(v), format="%d-%m-%Y")
R> d        ## key here were the as.character() and the correct format
[1] "1990-01-13" "1991-01-13" "1959-10-13"
R> 
R> class(d) ## these are now Date objects
[1] "Date"
R> 
R> d + 1    ## that we can compute with
[1] "1990-01-14" "1991-01-14" "1959-10-14"
R> 
票数 0
EN

Stack Overflow用户

发布于 2018-05-06 04:36:02

我可以解决这个问题,只需两次将数据类型从date转换为string再到number,然后使用"as.Date“函数更改格式。

代码语言:javascript
运行
复制
> New_His_data$BirthDate[1]
[1] 36473
1378 Levels: 13-1-1990 13-1-1991 13-10-1959 13-10-1973 13-10-1979 13-10-1988 13-10-1989 13-10-1994 13-11-1963 13-11-1970 ... 36473
> as.Date(New_His_data$BirthDate[1],origin = "1899-12-30")
Error in charToDate(x) : 
  character string is not in a standard unambiguous format
> as.Date(strptime(New_His_data$BirthDate[1],"%d-%m-%Y"),origin ="1899-12-30")
[1] NA
> as.Date(as.numeric(as.character(New_His_data$BirthDate[1])),origin = "1899-12-30")
[1] "1999-11-09"
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50193518

复制
相关文章

相似问题

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