小编sob*_*ber的帖子

r类似于cumsum的函数用于拆分数据帧

给出以下数据帧:

mydf <- data.frame(x=c(1:10,10:1),y=c(10:1,1:10))
Run Code Online (Sandbox Code Playgroud)

如何split使每个子数据帧具有一列的连续值大于另一列?

例如mydf,我希望的结果是将split其分为三个数据帧:

  1. (y> x;应该包含前5行mydf)
  2. (x> y;应包含第6至15行mydf)
  3. (y> x再次;应包含最后5行mydf)

我尝试使用以下代码,但它产生了错误的结果,其中每个y> x将被单独拆分; 此外,x> y的数据帧在第一行中包含ay> x:

split(mydf, cumsum(mydf$x > mydf$y))
Run Code Online (Sandbox Code Playgroud)

我尝试做的另一个不那么优雅的方法是在函数内部sapply使用单独的ifs split,但由于性能问题,我不想走这条路.

r dataframe

4
推荐指数
1
解决办法
143
查看次数

在多个字段中查找不在另一个表中的记录

假设我有两个表(tb1,tb2),它们都具有以下模式:

CREATE TABLE tb1 (
  col1 INT NOT NULL,
  col2 TEXT NOT NULL,
  col3 TEXT NOT NULL,
  col4 REAL
);
Run Code Online (Sandbox Code Playgroud)

如何查找记录tb1中不存在的tb2列上col1,col2,col3

我研究了这个,这个这个但到目前为止他们都只在一个专栏上找到了记录.我也在这些链接中使用了代码/逻辑,但最终以非常差的性能返回错误的结果(tb1上的45K记录,tb2上的1.7M记录).我正在尝试在SQLite上实现它.

如果你想看,这是我的示例代码(使用左连接w/where为null),但不要依赖它:

SELECT *
FROM tb1
LEFT JOIN tb2
ON
tb1.col1 = tb2.col1 AND
tb1.col2 = tb2.col2 AND
tb1.col3 = tb2.col3
WHERE
tb2.col1 IS NULL AND
tb2.col2 IS NULL AND
tb2.col3 IS NULL
Run Code Online (Sandbox Code Playgroud)

sql sqlite

1
推荐指数
1
解决办法
3566
查看次数

标签 统计

dataframe ×1

r ×1

sql ×1

sqlite ×1