首页 > 解决方案 > 基于条件的动态总和

问题描述

df <-data.frame(
  part = c('A','B','c'),
  start_date = c('2018-12-01','2018-12-06','2018-12-08'),
  end_date = c('2018-12-05','2018-12-07','2018-12-11'),
  X2018.12.01 = c(2,3,4),
  X2018.12.02 = c(5,6,0),
  X2018.12.03 = c(0,3,0),
  X2018.12.04 = c(5,9,1),
  X2018.12.05 = c(1,2,3),
  X2018.12.06 = c(2,3,4),
  X2018.12.07 = c(1,1,1),
  X2018.12.08 = c(6,6,6),
  X2018.12.09 = c(8,7,6),
  X2018.12.10 = c(0,1,1),
  X2018.12.11 = c(1,2,3))

df1 <- setNames(df, c("part","start_date","end_date","2018-12-01",
"2018-12-02","2018-12-03","2018-12-04","2018-12-05","2018-12-06","2018- 
12-07","2018-12-08","2018-12-09","2018-12-10","2018-12-11"))

现在我想在 df1 中创建一个列,它将根据其 start_date 和 end_date 对各个部分进行求和

我希望我能解释我的问题。

标签: r

解决方案


这是一个基本的 R 方法,

sapply(split(df1, seq(nrow(df1))), function(i) 
               rowSums(i[names(i) %in% as.character(seq.Date(as.Date(i$start_date[1]), 
                                                                     i$end_date[1], 
                                                                      by = 'days'))]))
#1.1 2.2 3.3 
#13   4  16 

推荐阅读