首页 > 解决方案 > 按列减去值,值翻转

问题描述

假设我有这个数据框,

data<- data.frame (A = c (6,5,4,3,2,1), B=c(0,0,4,4,0,0))

我想从 A 中减去 B,来创建这个,C=AB

data2 <- data.frame(A = c (6,5,4,3,2,1), B=c(0,0,4,4,0,0), C=c(6,5,0,0,0,0))

从第4行开始,A小于B,但是我不想要负值,我想保持C>=0,超出的值将滚动到下一行并进行扣除。知道我应该应用哪个功能吗?

标签: r

解决方案


也许不是一个非常干净的解决方案,但您的问题似乎意味着迭代搜索:

while(sum(data$B)>0)
  data <- data.frame(A=ifelse(data$A>=data$B,data$A-data$B,0),
                     B=lag(ifelse(data$A>=data$B,0,data$B-data$A),default=0))

推荐阅读