在R中重新编码特定日期

时间:2016-11-09 23:39:02

标签: r date lubridate recode

我想将我的数据集中的所有日期2006-04-11更改为2006-04-01。我将日期变量转换为一个因子,重新编码2006-04-11到2006-04-01,并将变量重新转换回class = date。

当变量是一个因子(所有2006-04-11日期都更改为2006-04-01)时,重新编码有效,但在转换回class = date之后,变量再次显示为2006-04-11 。

将日期变量转换为因子并检查它是否有效。

data$review_date<-as.factor(data$review_date)
class(data$review_date)

将因子变量重新编码为我想要的日期(2006-04-01)并查看数据。

recode_factor(data$review_date, '2006-04-11' = "2006-04-01")
data$review_date

将变量从因子转换回日期,检查类和查看数据。

data$review_date <- as_date(data$review_date,"%y/%m/%d")
class(review_date)
str(data)
data$review_date

或者,我愿意完全放弃所有日期的那一天,但我还没弄清楚如何做到这一点。

1 个答案:

答案 0 :(得分:2)

recode_factor()不会更新data中的值。您必须再次分配结果,如:

data$review_date <- recode_factor(data$review_date, '2006-04-11' = "2006-04-01")

...所以它可以覆盖原始值。

整个过程也可以是一个简单的替换操作。 E.g:

data <- data.frame(review_date = as.Date(c("2006-04-11","2001-01-01")))
data$review_date[data$review_date == "2006-04-11"] <- "2006-04-01" 

(是的,这将给出一个合适的Date类变量)