我有這個資料框
這是我的資料框的最小可重現示例
value <- c(rnorm(39, 5, 2))
Date <- seq(as.POSIXct('2021-01-18'), as.POSIXct('2021-10-15'), by = "7 days")
df <- data.frame(Date, value)
# This is the vector I have to compare with the Date of the dataframe
dates_tour <- as.POSIXct(c('2021-01-18', '2021-05-18', '2021-08-18', '2021-10-15'))
df <- df %>%
mutate(
tour = cut(Date, breaks = dates_tour, labels = seq_along(dates_tour[-1]))
)
現在我在每個組上都有資料框標簽,dates_tour我想根據tour因子拆分資料框,但我需要每個串列都包含前一個資料框的資料框。例如df_list[[1]]包含與tour == 1第二個串列需要包含第一個和第二個資料框的行tour == 1 | tour == 2。第三個串列需要包含第一個、第二個和第三個資料幀,依此類推。我需要撰寫一個適用于不同長度的通用代碼,dates_tour因為有時它可以包含不同長度的值。
此代碼根據tour值創建一個串列
df_list = split(df, df$tour)
但是對于創建我需要的東西沒有用
uj5u.com熱心網友回復:
我們可以為此使用回圈
df_list <- lapply(unique(df$tour), function(x) subset(df, tour %in% seq_len(x)))
uj5u.com熱心網友回復:
你也可以這樣做:
Reduce(rbind, split(df, ~tour), accumulate = TRUE)
如果您有舊版本的 R:
Reduce(rbind, split(df, df$tour), accumulate = TRUE)
您還可以使用accumulatefrom purrr:
library(purrr)
accumulate(split(df, ~tour), rbind)
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/323924.html
上一篇:如何將專案添加到鏈接串列的末尾?
下一篇:按r中的變數分組后的相交元素
