2017-04-03 142 views
-3

不知怎的,R中导入数据后,它给未知格式的日期,如转换为日期格式中的R

2016年12月1日 2012-01-01

我试图转换从未知的格式到正常的日期格式现在几个小时,但似乎在R是不可能的。请帮助,我如何从未知格式转换为日期格式?

+0

你是什么意思的未知格式。如果你不知道月份的一天的顺序,这是不可能的。例如,你不能决定2012-11-11意味着什么,或者更糟糕的是12-11-11意味着所有数字在几个月和几年内都是有效的。如果它们始终以相同的顺序并具有相同的分隔字符,则可以使用'as.Date' – OganM

+0

从SAS导入的数据中,其日期格式为2012-12-01,2012-01-01,2012 -10-02等,但R无法识别它,而不是给日期格式给这些日期的未知格式。那么我如何将未知格式转换为日期格式呢? – user3672160

+0

仍然不知道你的意思是“未知格式”。我觉得你正在谈论一个角色矢量,如果是这样的话,下面的答案将解决它。 – OganM

回答

0

我假设你有一个特征向量:

d <- c("2016-12-01", "2012-01-01") 

如果这是你可以做的情况:

d2 <- as.Date(d, format = '%Y-%m-%d') 
# or format = '%Y-%d-%m' if that's the case 
#> [1] "2016-12-01" "2012-01-01" 

或者:

d3 <- as.POSIXct(d, format = '%Y-%m-%d') 
#> [1] "2016-12-01 CET" "2012-01-01 CET" 

或者干脆让anytime包带头痛:

library(anytime) 
d4 <- anytime(d, tz = 'CET') 
#> [1] "2016-12-01 CET" "2012-01-01 CET" 
0

鉴于您使用了rstudio标记,我假定您可能已使用RStudio的“导入数据集”功能。如果是这种情况,则可以在设置导入时指定列包含日期。只需点击小箭头旁边的列标题,就会看到一列变量类型,其中一个是Date。如果你选择,你会被提示输入日期格式的字符串,看你的日期,可能是%Y-%m-%d(但这是你需要检查的东西)。

+0

是的,这是我做的,但是在我选择日期类型并设置格式%Y-%m-%d后,它显示所有值都不适用,所以我想它不会识别我的数据。然后,我决定默认使用初始给定的数据类型“unknown”,并使用3周前设置的代码将其更改为日期,但我没有保存我使用的代码。 – user3672160

+0

该列最可能包含具有该格式字符串日期以外的行的行。 – neilfws

+0

它也包含空格。好吧,现在我设置了字符类型,它将我的日期从2016-12-01修改为2016-12-01T00:00:00。我想现在我应该可以用它做点什么吗? – user3672160