我正在使用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
有关语法的任何建议可以做到这一点吗?理想情况下,只需在现有数据框中创建新的列变量即可。
答案 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