gpt4 book ai didi

r - 识别开始日期、结束日期、连续数的运行长度,并转置为新的数据框

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

我有一组如下所示的数据:

          Date boolean
407 2006-06-01 1
408 2006-06-02 1
409 2006-06-03 1
410 2006-06-04 NA
411 2006-06-05 0
412 2006-06-06 1
413 2006-06-07 1
414 2006-06-08 0
415 2006-06-09 1

从这里,我试图创建一个新的数据框,它会显示我的 1 的运行日期以及这些运行的时间,列标题:1)开始日期,2)结束日期,和 3)运行长度。

最终,我想根据上面的数据创建一个如下所示的数据框:
  Start Date   End Date  Length of Run
1 2006-06-01 2006-06-03 3
2 2006-06-06 2006-06-07 2

我的数据中有一些 NA,我也需要在整个数据中忽略它们。

最佳答案

你可以用 dplyr 做到这一点, 使用 mutate转换丢失的 boolean值为 0,group_by计算具有恒定变量值的组 boolean , filter限制在 boolean 的组设置为 1 并且该组有多个成员,然后 summarize抓取相关的摘要信息。 (我采取了一些额外的步骤来删除最后的分组变量)。

library(dplyr)
dat %>%
mutate(boolean = ifelse(is.na(boolean), 0, boolean)) %>%
group_by(group = cumsum(c(0, diff(boolean) != 0))) %>%
filter(boolean == 1 & n() > 1) %>%
summarize("Start Date"=min(as.character(Date)),
"End Date"=max(as.character(Date)),
"Length of Run"=n()) %>%
ungroup() %>%
select(-matches("group"))
# Start Date End Date Length of Run
# (chr) (chr) (int)
# 1 2006-06-01 2006-06-03 3
# 2 2006-06-06 2006-06-07 2

数据:
dat <- read.table(text="          Date boolean
407 2006-06-01 1
408 2006-06-02 1
409 2006-06-03 1
410 2006-06-04 NA
411 2006-06-05 0
412 2006-06-06 1
413 2006-06-07 1
414 2006-06-08 0
415 2006-06-09 1", header=T)

关于r - 识别开始日期、结束日期、连续数的运行长度,并转置为新的数据框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35162258/

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