更改日期格式(NA错误)

时间:2015-08-31 13:40:10

标签: r date

所以我有这个包含日期和其他值的数据文件。我使用以下代码导入了我的数据:

df <- read.csv(file.choose(), header=T, stringsAsFactors=F)

这样就可以使数据框中的所有值都符合要求。这使我的下一步更容易。

data.frame(df)包括:

date        x
20020102    1
20020102    2

日期每隔几千行就会改变。

我想更改日期格式,以便它是yyyy-mm-dd。

我尝试过使用代码:

df$date <- as.Date(df$date, format="%Y-%m-%d")

并且还使用了

df$date <- strptime(df$date, format="%Y-%m-%d")

但始终在日期列中获得NA值。

我是R的初学者,所以如果解决方案很简单或者可以清楚解释,那将非常有用。

非常感谢!

2 个答案:

答案 0 :(得分:2)

您可以使用正确的format

df$date <- as.Date(df$date, format='%Y%m%d')

目前尚不清楚您是否有数字或非数字'日期'列。如果是“数字”,请先转换为“字符”

df$date <- as.Date(as.character(df$date), format='%Y%m%d')

但是,即使列为strptimenumeric也会有用。

或使用library(lubridate)

library(lubridate)
ymd(df$date)

答案 1 :(得分:0)

问题是你的colunm&#34; date&#34;不属于班级&#39;日期&#39;,它是&#39;数字&#39;向量,因此命令as.Date返回NA`s。

您可以使用以下命令检查colunm日期的类是否正确:

class(df$date)

根据@akrun的建议,您应该将日期colunm转换为&#39;字符&#39;矢量,然后你可以按照你想要的方式格式化样式:

### your data example:
df <- data.frame(date = c(20020102, 20020102),
             x = c(1,2))
class(df$date)
#> [1] "numeric"

#convert the colunm date to character
df$date <- as.character(df$date)

# Then, convert to the desired date format:
df$date <- as.Date(df$date, format='%Y%m%d')

# check the results:
df
#>         date x
#> 1 2002-01-02 1
#> 2 2002-01-02 2

class(df$date)
#> [1] "Date"