给出以下数据帧:
mydf <- data.frame(x=c(1:10,10:1),y=c(10:1,1:10))
Run Code Online (Sandbox Code Playgroud)
如何split使每个子数据帧具有一列的连续值大于另一列?
例如mydf,我希望的结果是将split其分为三个数据帧:
mydf)mydf)mydf)我尝试使用以下代码,但它产生了错误的结果,其中每个y> x将被单独拆分; 此外,x> y的数据帧在第一行中包含ay> x:
split(mydf, cumsum(mydf$x > mydf$y))
Run Code Online (Sandbox Code Playgroud)
我尝试做的另一个不那么优雅的方法是在函数内部sapply使用单独的ifs split,但由于性能问题,我不想走这条路.
假设我有两个表(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)