【发布时间】:2021-11-17 05:40:50
【问题描述】:
我有一个数据集 (ds),其中包含变量 ``、date、values 和 break。 values 是一个累积和,直到break == "True" 并且在数据再次开始累积和的过程之后。在我的例子中:
# Packages
library(dplyr)
library(lubridate)
# My data set
ds <- read.csv("https://raw.githubusercontent.com/Leprechault/trash/main/accumulated_values_table")
ds$date <- ymd(ds$date)
str(ds)
# 'data.frame': 4458 obs. of 4 variables:
# $ id : int 0 1 2 2 1 0 3 2 4 1 ...
# $ date : Date, format: "2020-11-26" "2020-11-26" "2020-11-26" "2020-11-27" ...
# $ values: int 36 33 27 22 34 28 5 18 28 24 ...
# $ break.: chr "False" "False" "False" "False" ...
我想找到任何方法来删除累积和,所需的输出是id 的每日值数。对于任何函数,我都需要一些帮助来减去 day+1 - day,直到我的列 break == 每个id 的“True”。例如给我的id=3:
# Actual dataset
ds.3 <- ds %>% filter(id==3)
head(ds.3)
# id date values break.
# 1 3 2020-11-27 5 True
# 2 3 2020-12-03 16 False
# 3 3 2020-12-05 18 False
# 4 3 2020-12-08 7 True
# 5 3 2020-12-09 27 False
# 6 3 2020-12-19 18 False
# Desirable dataset
# id date values break.
# 1 3 2020-11-27 5 True
# 2 3 2020-12-03 16 False
# 3 3 2020-12-05 2 False
# 4 3 2020-12-08 5 True
# 5 3 2020-12-09 27 False
# 6 3 2020-12-19 0 False * PS: if the sum is negative, the the value is equal to 0
请问有什么想法吗?
【问题讨论】:
-
您的
break.列是布尔字符串而不是logical列是否有特殊原因? -
没有@r2evans 我可以毫无问题地更改此列,此列可以是
logical。 -
看起来
break.=="True"行完全从“非累积”步骤中排除,对吗?