Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 在数据框中查找没有先决条件记录的记录_Sql_R_Sqlite_Sqldf - Fatal编程技术网

Sql 在数据框中查找没有先决条件记录的记录

Sql 在数据框中查找没有先决条件记录的记录,sql,r,sqlite,sqldf,Sql,R,Sqlite,Sqldf,我有一个包含3列的数据帧:Timestamp、MMR_NBR和Action 对于所有MMR\u NBR实例,操作DFV必须在SAP加载之前发生。我想提取以前没有发生DFV操作的SAP加载实例。我在R中使用sqldf,我知道R使用SQLite数据库语言,所以窗口函数是有限的。我设法获得了这些记录,但我想看看是否有更简单更好的方法,可以使用SQL查询或任何R包(如dplyr)来编写这些记录 样本数据: 使用dplyr: 步骤1:将时间戳转换为实际时间戳: df5$Timestamp<- as.

我有一个包含3列的数据帧:Timestamp、MMR_NBR和Action

对于所有MMR\u NBR实例,操作DFV必须在SAP加载之前发生。我想提取以前没有发生DFV操作的SAP加载实例。我在R中使用sqldf,我知道R使用SQLite数据库语言,所以窗口函数是有限的。我设法获得了这些记录,但我想看看是否有更简单更好的方法,可以使用SQL查询或任何R包(如dplyr)来编写这些记录

样本数据:

使用dplyr:

步骤1:将时间戳转换为实际时间戳:

df5$Timestamp<- as.POSIXct(as.character(df5$Timestamp), format="%m/%d/%Y %I:%M:%S %p")
结果:

# A tibble: 5 x 3
# Groups:   MMR_NBR [4]
  Timestamp           MMR_NBR Action  
  <dttm>              <fct>   <fct>   
1 2018-08-14 11:22:18 W00364  SAP Load
2 2018-08-14 11:30:03 K00364  SAP Load
3 2018-08-14 11:32:26 K00364  SAP Load
4 2018-08-22 16:34:53 K00646  SAP Load
5 2018-08-23 11:47:15 B00218  SAP Load

你的read.table不能按原样工作,我猜在SO问题中没有保留选项卡。我使用了一个函数来选择我的df的20行,但该函数不起作用。我猜,不知何故,dput和head的组合不起作用。我从未见过dputheadx,n=20不能与帧一起工作,这很奇怪。也许可以用write.csvheadx的输出替换它?我想这已经足够接近这个数据了。你所有的列都是因子,所以它列出了所有的级别,即使你只列出了前20个。在read.table调用中,我强烈建议使用stringsAsFactors=FALSE。这是荒谬的。
df5$Timestamp<- as.POSIXct(as.character(df5$Timestamp), format="%m/%d/%Y %I:%M:%S %p")
require(dplyr)
df5 %>% group_by(MMR_NBR) %>%
arrange(Timestamp) %>% # Order by time
filter(Action=="SAP Load" & cumsum(Action=="DFV")==0) # Extract those cases where Action is "SAP Load" and the total of previous rows where Action was "DFV" is zero
# A tibble: 5 x 3
# Groups:   MMR_NBR [4]
  Timestamp           MMR_NBR Action  
  <dttm>              <fct>   <fct>   
1 2018-08-14 11:22:18 W00364  SAP Load
2 2018-08-14 11:30:03 K00364  SAP Load
3 2018-08-14 11:32:26 K00364  SAP Load
4 2018-08-22 16:34:53 K00646  SAP Load
5 2018-08-23 11:47:15 B00218  SAP Load