R - 过滤数据以仅包含日期 X 和后续日期
R - Filter data to only include date X and following date
我的数据结构如下,但有更多的列。
我需要过滤数据以仅包含某人的日期为 X 和 X+1 的实例。
在此示例中,只应保留 B 和 C,并且只保留日期直接相邻的行。所以第2、3、5、6行应该是唯一剩下的。
过滤后,我需要计算发生的次数以及对其他值进行计算,可能对 X+1 日期的值列求和。
Person <- c("A","B","B","B","C","C","D","D")
Date <- c("2021-01-01","2021-01-01","2021-01-02","2021-01-04","2021-01-09","2021-01-10","2021-01-26","2021-01-29")
Values <- c(10,15,6,48,71,3,1,3)
df <- data.frame(Person, Date, Values)
df
我该如何完成?
end_points <- df %>%
mutate(Date = as.Date(Date)) %>%
group_by(Person) %>%
filter(Date - lag(Date) == 1 | lead(Date) - Date == 1) %>%
ungroup()
结果
end_points
# A tibble: 4 x 3
Person Date Values
<chr> <date> <dbl>
1 B 2021-01-01 15
2 B 2021-01-02 6
3 C 2021-01-09 71
4 C 2021-01-10 3
第二部分:
end_points %>%
group_by(Person) %>%
slice_max(Date) %>%
ungroup() %>%
summarize(total = sum(Values))
我的数据结构如下,但有更多的列。
我需要过滤数据以仅包含某人的日期为 X 和 X+1 的实例。
在此示例中,只应保留 B 和 C,并且只保留日期直接相邻的行。所以第2、3、5、6行应该是唯一剩下的。
过滤后,我需要计算发生的次数以及对其他值进行计算,可能对 X+1 日期的值列求和。
Person <- c("A","B","B","B","C","C","D","D")
Date <- c("2021-01-01","2021-01-01","2021-01-02","2021-01-04","2021-01-09","2021-01-10","2021-01-26","2021-01-29")
Values <- c(10,15,6,48,71,3,1,3)
df <- data.frame(Person, Date, Values)
df
我该如何完成?
end_points <- df %>%
mutate(Date = as.Date(Date)) %>%
group_by(Person) %>%
filter(Date - lag(Date) == 1 | lead(Date) - Date == 1) %>%
ungroup()
结果
end_points
# A tibble: 4 x 3
Person Date Values
<chr> <date> <dbl>
1 B 2021-01-01 15
2 B 2021-01-02 6
3 C 2021-01-09 71
4 C 2021-01-10 3
第二部分:
end_points %>%
group_by(Person) %>%
slice_max(Date) %>%
ungroup() %>%
summarize(total = sum(Values))