R:通过减去2行来创建新列,但仅当行中的2行具有值时才创建

时间:2016-05-27 19:48:02

标签: r dataframe dataset

在R中,我有来自csv的数据框,其中包含 A 列中的不同值。 我想通过从 A 中的下一行减去 A 中的相同行来创建新列 B ,但前提是只有连续2行值≠0

最好通过一个例子解释:

A    B    explanation
_    _    ___________
0    0    0, because A = 0
1    1    2-1
2    1    3-2
3    0    0, because next line in A = 0
0    0    0, because A = 0
4    0    0, because next line in A = 0
0    0    0, because A = 0
3   -1    2-3
...  ...  ...
2    0    0, because it is the last value in the df

由于不同的例外,我没有找到任何解决方案。 谢谢!

1 个答案:

答案 0 :(得分:1)

我会使用dplyr计算所有值,并检查是否满足条件。

ifelse

然后将满足您条件的任何设置为零。我认为这比使用df$B[df$is_zero] <- 0 快一点。

> select(df, -is_zero)
  A  B
1 0  0
2 1  1
3 2  1
4 3  0
5 0  0
6 4  0
7 0  0
8 3 NA

给你:

local gm = require 'graphicsmagick'
local img = gm.Image()
local ok = pcall(img.fromString, img, body)
img = img:toTensor('float', 'RGB', 'DHW')