这很简单,但无论出于什么原因,我都有困难.假设我有:

data <- data.frame (n1  = c(14,9,7,2, 23,21,10,8),
                  n2 = c(65, 65, 65, 65, 78, 78, 78, 78),
n3=c(51, NA, NA, NA, 55, NA, NA, NA),
want=c(51, 37, 28, 21, 55, 32, 11, 1 ), 
group=c(1,1,1,1,2,2,2,2 ))

我有n1,n2和n3,其中我有第一个n3值(区分b/w n1和n2).我想做一个'want'变量,减go 下一个值上方的滞后行.所以对于下面的第2行,它应该是51-14=37,然后是37-9=28,以此类推.

  n1 n2 n3 want group
1 14 65 51   51     1
2  9 65 NA   37     1
3  7 65 NA   28     1
4  2 65 NA   21     1
5 23 78 55   55     2
6 21 78 NA   32     2
7 10 78 NA   11     2
8  8 78 NA    1     2

有什么 idea 吗?谢谢

推荐答案

没有累积减法,但你可以做一个累积和,然后减go 它.

library(dplyr)

data %>%
  group_by(group) %>%
  mutate(want = ifelse(!is.na(n3), n3, first(n3) - lag(cumsum(n1)))) %>%
  ungroup()

R相关问答推荐

从有序数据中随机抽样

使用tidyverse / Mutate的存款账户余额

如何编辑ggplot的图例字使用自定义对象(gtable)?'

通过在colname中查找其相应值来创建列

无法正确设置动态创建的Quarto标注的格式

如何从容器函数中提取conf并添加到ggplot2中?

Ggplot2中geom_tile的动态zoom

使用R中的dist()迭代ID匹配的欧几里德距离

如何将使用rhandsontable呈现的表值格式化为百分比,同时保留并显示完整的小数精度?

仅在R中的数据集开始和结束时删除所有 Select 列的具有NA的行

数据集上的R循环和存储模型系数

主题(Legend.key=Element_RECT(Fill=&Quot;White&Quot;))不起作用

将边列表转换为路径长度列表

R中从因数到数字的转换

我有2011-2022年的年度数据.如何计算最低年份和最高年份之间的差额?

在R中,有没有什么方法可以根据一列中的多个值来过滤行?

使用dplyr删除具有条件的行

如何计算物种矩阵中一行中的唯一个数?

判断列集是否以任意顺序按行顺序在R中相同

向量化sApply函数