gpt4 book ai didi

r - 验证日期序列的顺序是否正确

转载 作者:行者123 更新时间:2023-12-04 10:36:53 26 4
gpt4 key购买 nike

我有一个包含 4 列日期的数据框。应该是 col1 先出现,col2 第二,col3 第三,col4 最后。我想确定哪些行的日期不按顺序

这是一个玩具数据框

col1 <- c(as.Date("2004-1-1"), as.Date("2005-1-1"), as.Date("2006-1-1"))
col2 <- c(as.Date("2004-1-2"), as.Date("2005-1-3"), as.Date("2006-1-2"))
col3 <- c(as.Date("2004-1-5"), as.Date("2005-1-9"), as.Date("2006-1-19"))
col4 <- c(as.Date("2004-1-9"), as.Date("2005-1-15"), as.Date("2006-1-10"))
dates <- data.frame(col1, col2, col3, col4)

dates

col1 col2 col3 col4
1 2004-01-01 2004-01-02 2004-01-05 2004-01-09
2 2005-01-01 2005-01-03 2005-01-09 2005-01-15
3 2006-01-01 2006-01-02 2006-01-19 2006-01-10

我想要的输出是,
    col1       col2       col3       col4       Seq?
1 2004-01-01 2004-01-02 2004-01-05 2004-01-09 T
2 2005-01-01 2005-01-03 2005-01-09 2005-01-15 T
3 2006-01-01 2006-01-02 2006-01-19 2006-01-10 F

最佳答案

我可以想到几个解决方案。我天真地建议使用 apply?is.unsorted , 即:

Test if an object is not sorted (in increasing order), without the cost of sorting it.


!apply(dates, 1, is.unsorted)
#[1] TRUE TRUE FALSE

否则,转换为长集合,然后进行分组操作,这在较大的数据集上应该更快:
tmp <- cbind(row=seq_len(nrow(dates)), stack(lapply(dates, as.vector)))
!tapply(tmp$values, tmp$row, FUN=is.unsorted)

最后,通过 Map 将每一列与下一列进行比较的蛮力方法,这应该会更快:
Reduce(`&`, Map(`<`, dates[-length(dates)], dates[-1]))

关于r - 验证日期序列的顺序是否正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55347311/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com