【发布时间】:2021-11-25 00:18:13
【问题描述】:
我有一个数据集,我尝试将其分成两个列表。在每个列表中,它包含一个元素(例如,列表对象中的[[1]]、[[2]]、[[3]]),用于 10 天间隔内的单个 ID(例如,[[1]] 中的第 1-10 天,11 [[2]] 中的 -21,[[3]] 中的 22-31)。
在下面的示例代码中,jan 的列表对于每个 ID 具有三个间隔(例如,A 具有三个间隔的三个元素,B 具有三个间隔的三个元素,@987654332 @ 具有三个间隔的三个元素)。 july 的列表对于每个 ID 只有 2 个间隔,这对我来说是个问题(例如,它在列表对象中只包含 [[1]] 和 [[2]] 而不是三个)。
我试图弄清楚如何删除jan 中与july 的间隔不对应的额外间隔。例如,对于IDA,我想创建一个函数来比较两个列表,并删除jan 中的第三个区间(july 中的缺失区间)。我该怎么做?
library(lubridate)
library(tidyverse)
date <- rep_len(seq(dmy("01-01-2010"), dmy("20-07-2010"), by = "days"), 600)
ID <- rep(c("A","B","C"), 200)
df <- data.frame(date = date,
x = runif(length(date), min = 60000, max = 80000),
y = runif(length(date), min = 800000, max = 900000),
ID)
df$month <- month(df$date)
jan <- df %>%
mutate(new = floor_date(date, "10 days")) %>%
group_by(ID) %>%
mutate(new = if_else(day(new) == 31, new - days(10), new)) %>%
group_by(new, .add = TRUE) %>%
filter(month == "1") %>%
group_split()
july <- df %>%
mutate(new = floor_date(date, "10 days")) %>%
group_by(ID) %>%
mutate(new = if_else(day(new) == 31, new - days(10), new)) %>%
group_by(new, .add = TRUE) %>%
filter(month == "7") %>%
group_split()
【问题讨论】:
-
很难理解你实际上想要完成什么。你说的元素是什么意思?你说的间隔是什么意思?我怀疑你没有收到答复的原因是不清楚你在追求什么。