如何在R中引用数据框列(滞后单元格)中的前一个单元格

时间:2016-05-13 17:35:26

标签: r

我正在使用R,并且当该向量属于数据帧时,我正试图找到一种方法来引用向量中的前一个单元格。通过前一个单元格,我基本上希望某种“滞后”命令,以便我可以将一个单元格与之前的单元格进行比较。举个例子,我有这些数据:

A <- c(1,0,0,0,1,0,0)
B <- c(1,1,1,1,1,0,0)
AB_df <- cbind (A,B)

我想要的是给定行中的给定单元格,如果该单元格的值小于同一列向量的前一个单元格的值,则返回值1,如果不返回值0。在这个例子中,新列将在下面被称为“A-flag”和“B-flag”。

A   B   A-flag  B-flag
1   1   0       0
0   1   1       0
0   1   0       0
0   1   0       0
1   1   0       0
0   0   1       1
0   0   0       0

有关语法的任何建议可以做到这一点吗?理想情况下,只需在现有数据框中创建新的列变量即可。

1 个答案:

答案 0 :(得分:1)

以下是使用dplyr软件包及其lag方法的一种解决方案:

library(dplyr)
AB_df <- data.frame(A = A, B = B)
AB_df %>% mutate(A.flag = ifelse(A < lag(A, default = 0), 1, 0),
                 B.flag = ifelse(B < lag(B, default = 0), 1, 0))
  A B A.flag B.flag
1 1 1      0      0
2 0 1      1      0
3 0 1      0      0
4 0 1      0      0
5 1 1      0      0
6 0 0      1      1
7 0 0      0      0