如何检查R中的日期是否按时间顺序排列?
我有一个包含4个日期列的大型数据集(比如date_1、date_2、date_3、date_4)。我想检查日期1是否在日期2之前,日期2是否在日期3之前,日期3是否在日期4之前。我该怎么做?我曾想过做一个嵌套的if语句,但运气不太好。假设您的数据与此类似:如何检查R中的日期是否按时间顺序排列?,r,date,R,Date,我有一个包含4个日期列的大型数据集(比如date_1、date_2、date_3、date_4)。我想检查日期1是否在日期2之前,日期2是否在日期3之前,日期3是否在日期4之前。我该怎么做?我曾想过做一个嵌套的if语句,但运气不太好。假设您的数据与此类似: df <- structure(list(id = 1:4, Date_1 = structure(c(18534, 18544, 18536, 18547), class = "Date"), Date_2 =
df <- structure(list(id = 1:4, Date_1 = structure(c(18534, 18544, 18536,
18547), class = "Date"), Date_2 = structure(c(18533, 18539, 18540,
18545), class = "Date"), Date_3 = structure(c(18532, 18535, 18543,
18541), class = "Date"), Date_4 = structure(c(18537, 18550, 18545,
18537), class = "Date")), row.names = c(NA, -4L), class = c("tbl_df",
"tbl", "data.frame"))
df
# A tibble: 4 x 5
# id Date_1 Date_2 Date_3 Date_4
# <int> <date> <date> <date> <date>
#1 1 2020-09-29 2020-09-28 2020-09-27 2020-10-02
#2 2 2020-10-09 2020-10-04 2020-09-30 2020-10-15
#3 3 2020-10-01 2020-10-05 2020-10-08 2020-10-10
#4 4 2020-10-12 2020-10-10 2020-10-06 2020-10-02
在base R中,您可以使用apply
:
cols <- grep('Date', names(df))
df$check <- apply(df[cols], 1, function(x) all(diff(as.Date(x)) > 0))
cols请添加小示例以及预期输出。阅读并了解如何给予帮助。非常感谢,这非常有帮助!也谢谢你给我的关于如何提出一个好问题的建议。我是新来的,但我会记住这一点的!
cols <- grep('Date', names(df))
df$check <- apply(df[cols], 1, function(x) all(diff(as.Date(x)) > 0))