繁体   English   中英

选定行的总和并添加到 R 中的下一行

[英]Sum of selected rows and adding to the next row in R

我需要总结“S”列中“D”值不为零的所有值。 然后,我想将此结果与“S”列的下一行(标记为红色)中的值相加。 代替标记为黄色的值,我想在新的 S 中放置 0。

在此处输入图片说明

df<-data.frame(product = rep("A",7), data = seq(as.Date("2020-01-06"), as.Date("2020-01-12"), by = "day"),
               D = c(0,200,100,50,0,0,0), S = c(2,20,300,300,200,1,1))

> df
  product       data   D   S
1       A 2020-01-06   0   2
2       A 2020-01-07 200  20
3       A 2020-01-08 100 300
4       A 2020-01-09  50 300
5       A 2020-01-10   0 200
6       A 2020-01-11   0   1
7       A 2020-01-12   0   1

你可以试试:

library(dplyr)

df %>%
  group_by(idx = cumsum(lag(D == 0, default = TRUE))) %>%
  mutate(`new S` = case_when(
    row_number() == n() ~ sum(S, na.rm = TRUE), 
    TRUE ~ 0)
    ) %>%
  ungroup() %>%
  select(-idx)

输出:

# A tibble: 7 x 5
  product data           D     S `new S`
  <fct>   <date>     <dbl> <dbl>   <dbl>
1 A       2020-01-06     0     2       2
2 A       2020-01-07   200    20       0
3 A       2020-01-08   100   300       0
4 A       2020-01-09    50   300       0
5 A       2020-01-10     0   200     820
6 A       2020-01-11     0     1       1
7 A       2020-01-12     0     1       1

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM