r - 根据 R 中的条件对列中的行求和
问题描述
我想总结 Col1 中 Col2 等于 0 的行。并将总和添加到零之后的第一个值。我在下面展示一个例子。我在数据框中有不同的产品。
Date <- seq(as.Date("2021-01-01"), as.Date("2021-01-07"), by = "day")
Product<-rep("A",7)
Col1 <- c(2, 5, 1, 3, 2, 1, 2)
Col2 <- c(40, 0, 0, 0, 0, 0, 50)
Expected <- c(40, 0, 0, 0, 0, 0, 62)
TD <- data.frame(Date, Product, Col1, Col2, Expected)
解决方案
这是否可行:我已按产品分组,以防您的实际数据具有这种结构。
library(dplyr)
TD %>% group_by(Product) %>% mutate(sumval = sum(Col1[Col2 == 0])[1]) %>%
mutate(Expected = Col2) %>%
mutate(Expected = case_when((Col2 != 0 & lag(Col2) == 0) ~ Expected + sumval, TRUE ~ Expected )) %>%
select(-sumval)
# A tibble: 7 x 5
# Groups: Product [1]
Date Product Col1 Col2 Expected
<date> <chr> <dbl> <dbl> <dbl>
1 2021-01-01 A 2 40 40
2 2021-01-02 A 5 0 0
3 2021-01-03 A 1 0 0
4 2021-01-04 A 3 0 0
5 2021-01-05 A 2 0 0
6 2021-01-06 A 1 0 0
7 2021-01-07 A 2 50 62
推荐阅读
- angular - 使用 ngx-webcam 捕获图像后暂停或冻结图像
- mongodb - 通过传入文档数组进行 Mongoose 更新
- javascript - 将数据从 Flask 传递到 Vue 而不请求它
- airflow - JavaScript UDF 在 Airflow 中失败,但在 Snowflake 中有效
- javascript - 如何在 Javascript 中更改引导按钮标题
- html - 无法绑定到“alt”,因为它不是“i”的已知属性
- ios - 如何在 Flutter 中将用户数据保存在用户的本地设备上?
- sonarqube - SonarQube - 无法自动将权限模板分配给项目
- storybook - Storybook 的视口插件不显示自定义视口大小(svelte-kit)
- arrays - Powershell 多维数组迭代