将一行与前 3 行进行比较

森林山姆

我有以下数据框

id<-1:10
x<-c(240, 220, 200, 180, 160, 170, 120, 130, 80, 60)
df<-data.frame(id, x)

我想添加一列(名为“valid”),指示 x 值是否小于前 3 个 x 值如果 x 值满足此条件,则“有效”中的相应行必须 = 1

理想情况下,我希望 x 值仅包含在标准中,如果它们获得“有效”值 = 1

我预计 NA 在“有效”列的前 3 行中。

输出将如下所示:

id<-1:10
x<-c(240, 220, 200, 180, 160, 170, 120, 130, 80, 60)
valid<-c(NA, NA, NA, 1, 1, 0, 1, 0, 1, 1)
df1<-data.frame(id, x, valid)

id   x     valid
1   240      NA
2   220      NA
3   200      NA
4   180       1
5   160       1
6   170       0
7   120       1
8   130       0
9   80        1
10  60        1
罗纳克·沙阿

如果您只需要检查 3 个值,则可以使用lag

library(dplyr)
library(zoo)
df %>% mutate(valid = +(x < lag(x) & x < lag(x, 2) & x < lag(x, 3)))

更通用的解决方案是使用滚动操作和窗口大小进行回顾,以便即使您必须测试最后 10 个值也可以轻松扩展它。

df %>% mutate(valid = +(x < lag(rollapplyr(x, 3, min, fill = NA))))

#   id   x valid
#1   1 240    NA
#2   2 220    NA
#3   3 200    NA
#4   4 180     1
#5   5 160     1
#6   6 170     0
#7   7 120     1
#8   8 130     0
#9   9  80     1
#10 10  60     1

+一开始将逻辑值(TRUE/ FALSE)为整数值(1/ 0)。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

将前一行与当前行进行比较

雪花查询将一行与所有前一行进行比较

将一行与其以下行进行比较

熊猫将条件与上一行进行比较

将多行与前一行进行比较并在满足条件时减去pandas

python将前一行的值与当前行进行比较

如何将一行与另一行进行比较?

Perl:将文件的每一行与该文件的每一行进行比较

使用大查询将前两行与当前行和下一行进行比较

查询表并与另一行进行比较

在将一行与多行进行比较之后对行求和

将新行与TXT文件中的最后一行进行比较

使用PowerShell将行与CSV中的下一行进行比较

如何将具有行的记录与另一行进行比较?

将一行与所有其他行进行比较

将变量与txt文件中的每一行进行比较

熊猫将每一行与参考行进行比较-仅某些列

如何将numpy数组的一行与所有其他行进行比较

Python将文件中的每一行与其他所有行进行比较

将每一行与data.frame中的所有其他行进行比较

Pandas / Python - 将每一行与所有其他行进行数字比较

使用bash将每行的特殊列与下一行进行比较

如何将当前行与php中mysql表的下一行进行比较

VBScript和SQL Server 2005将当前行与上一行进行比较

将列的一行与组中的所有其他行进行比较

R:将一行与它之前的所有行进行比较

将一行与前 12 个值进行比较

vb.net,用于将一行与另一行进行比较的每个循环

SQL Server中的UNION如何将一行与另一行进行比较?