首页 > 解决方案 > R:如何将日期存储在 data.frame 中并防止 R 将其转换为数字?

问题描述

mydat <- data.frame(id = c(1, 1, 2), date_of_entry = c(NA, NA, NA))
mydate <- structure(17189, class = "Date")
> mydate
[1] "2017-01-23"

mydate是一个date,我想用那个填充date_of_entrymydateid == 1如果我尝试:

mydat$date_of_entry[mydat$id == 1] <- mydate
> mydat
  id date_of_entry
1  1         17189
2  1         17189
3  2            NA

但是,我希望该date_of_entry列包含实际日期,而不是 R 中日期的数字表示。我该怎么做呢?

标签: rdataframedate

解决方案


date_of_entry分配值之前创建 Date 类的列(当前它属于“逻辑”类)。

mydat$date_of_entry <- as.Date(mydat$date_of_entry)
mydat$date_of_entry[mydat$id == 1] <- mydate
mydat

#  id date_of_entry
#1  1    2017-01-23
#2  1    2017-01-23
#3  2          <NA>

此外,这些数字是日期的数字表示,因此您也可以将它们转换为数字中的日期。

#dataframe
mydat <- data.frame(id = c(1, 1, 2), date_of_entry = c(NA, NA, NA))
#date converted to number
mydat$date_of_entry[mydat$id == 1] <- mydate
#convert it back to date
mydat$date_of_entry <- as.Date(mydat$date_of_entry)

推荐阅读