所以我有这个包含日期和其他值的数据文件。我使用以下代码导入了我的数据:
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的初学者,所以如果解决方案很简单或者可以清楚解释,那将非常有用。
非常感谢!
答案 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')
但是,即使列为strptime
,numeric
也会有用。
或使用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"