问题标签 [dtplyr]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
58 浏览

r - 基于重复的连续行条目创建新列

想象一下以下数据框的片段:

我要做的是根据ActivityName中的重复条目创建两个新列。

具体来说,我想将同一活动的两个后续行组合成一行,并带有开始和完成时间戳(从时间开始,以秒为单位)。

鉴于并非ActivityName中的所有条目都有匹配的第二个条目(但是,最多两个连续条目是相同的),我还想删除这样的行,在这种情况下为延迟。

然后它应该看起来像:

ActivityName中的所有类别在该列中出现多次。我希望不要比较它们的关联时间,而不是跨越整个列,只比较那些有两个连续相同出现的时间。

任何关于如何解决这个问题的想法都将受到高度赞赏。

0 投票
0 回答
86 浏览

r - setDT 而不是 as.data.table 用于 dplyr 管道?

我注意到dtplyr(今年 1 月 1.0.1 发布)用于as.data.table将变量带回data.table类型:https ://dtplyr.tidyverse.org/articles/translation.html

我是 data.table 的忠实粉丝和用户,多年来一直将它与 dplyr 一起使用,为此我为自己编写了许多包装函数,这些函数现在是dtplyr.

但是,我正在使用setDT,因为我认为它更有效,因为它与通过引用分配的 data.table 心态保持一致。

所以我想知道为什么哈德利不使用它?
总的来说 - 当需要从 data.frame(或 tibble)转换为 data.table 时,使用这两者更有效的是什么?

0 投票
1 回答
841 浏览

r - 使用 dtplyr 时,pivot_longer 会出错

我有一个大型数据集,我正在尝试使用 dtplyr 进行整理。它由用于不同位置的大量(>1000)日期值对组成。原版使用了一个 pivot_longer,它在 dplyr 中运行良好,但在 dtplyr 中出现错误。有没有办法解决这个问题,保持 dtplyr 的性能优势?

这有效

但这给出了错误:

错误信息是:

错误:不能对不存在的元素进行子集化。
x 位置 1 和 2 不存在。
i 只有 0 个元素。
运行rlang::last_error()以查看错误发生的位置。
另外:警告信息:
预计 2 件。NA缺失的部分以7 行 [1, 2, 3, 4, 5, 6, 7]填充。
rlang::last_error()
错误:内部错误:跟踪数据不是方形的。

更新 - 它现在给出这个错误信息:

UseMethod(“pivot_longer”)中的错误:没有适用于“pivot_longer”的方法应用于“c('dtplyr_step_first','dtplyr_step')”类的对象

顺便说一句,这也有效,但我认为它失去了 dtplyr 性能增益:

0 投票
1 回答
84 浏览

r - 如何将 dtplyr 与 SQL Server 数据库一起应用

我正在尝试将 dtplyr 应用于 SQL Server 数据库。

如下图我成功申请了dplyr,但是不知道怎么申请dtplyr

我怎样才能做到这一点?

0 投票
2 回答
337 浏览

r - tidyverse 中的非 equi 连接

我想知道是否有人知道dplyr扩展包 (dbplyrdtplyr) 是否允许在通常的 dplyr 工作流程中进行非 equi 连接?我很少需要data.table,但快速非 equi 连接是我总是需要的唯一时刻setDT,然后执行连接,然后用as_tibble(). 我浏览了 github 上包中的问题,但没有发现这是计划中的还是已经实现的。

0 投票
2 回答
66 浏览

r - 使用 dtplyr 时,将函数输入中的列用于 group_by 变量

尝试使用 dtplyr 按组汇总列时,分组似乎不起作用。由于 group 变量是我的函数的输入,因此我尝试使用 group_by_ 仅接收错误消息。

数据:

功能:

0 投票
2 回答
130 浏览

r - 使用 data.table 和 for 循环为多列创建表

我需要使用 data.table 加速代码。我被困在如何引用从向量中索引的变量上。

数据:

dtplyr 代码:

数据表尝试:

这适用于单个变量:

0 投票
0 回答
65 浏览

r - 使用 dplyr/dtplyr 对 data.table 进行复杂更新的最佳方法是什么

我们编写了一个包来分析与时间窗口相关的大量事件。

为了进行分析,我们需要建立窗口的一些属性以及它们之间的交叉引用。

这是使用 data.table 的本机语法完成的。一些步骤的示例包含在下面的reprex 中。

我们现在正在寻求使用 dplyr/dtplyr 重新构建这个包以提高可读性并与其他方共享。

虽然我可以用 dplyr 语法编写“查询”,但我没有看到一种将更新应用到基础表的简洁方式——添加列、更新行等,而无需重复创建和替换副本。当数据量很大时,data.table 的“原地更新”特性是非常可取的。有没有办法在 dplyr 语法中利用这一点?(我遇到了 immutable = FALSE 的障碍并尝试使用 rows_update())

reprex 包于 2021-03-25 创建(v1.0.0)

0 投票
1 回答
194 浏览

r - R:尝试应用lazy_dt以使用dtplyr时出现env_get_list错误

我正在尝试在 R Shiny 中创建仪表板。作为这个仪表板的一部分,我有一个非常大的数据集,它有一个反应性添加的列,而这个数据集的三个反应性子集是通过在不同日期过滤产生的。

到目前为止,我已经通过 dplyr 并使用 filter 和 mutate 函数实现了上述目标。但是,我注意到代码中的这些点似乎在减慢它的速度。当任何触发这些表更新的反应变量发生变化时,处理每个表大约需要 10 秒。所以我希望加快速度。

我知道 dplyr 比 data.table 慢得多,但另一方面,它更容易理解语法。我也知道存在 dtplyr 包以将 dplyr 代码转换为 data.table 语法,但我无法让它工作。

我一直在查看文档和一些 youtube 演示,据我了解,似乎为了使用 dtplyr,我需要使用lazy_dt 函数来转换表,然后将标准 dplyr 函数应用于该表,然后使用as.data.table() 或 as.tibble() 命令将其转换回数据表。

但是,代码不起作用,即使我基本上遵循了与演示中完全相同的语法。

这是一些使用我在主代码中导入的库的示例代码,它使用了 iris 数据集。它在 print 和 as.data.table 命令中产生以下错误:

我无法弄清楚这个错误是什么意思或为什么会发生。没有“默认”参数。lazy_dt 唯一需要的参数是 X,它是要通过它传递的数据集。

这是示例代码。我正在关注这个 Youtube 教程... https://www.youtube.com/watch?v=qwHHVU-NBLw ...您可以看到库之后的前三行代码与中的语法完全相同视频,但在视频中打印功能打印表格,但我的产生错误。任何想法为什么?注意:即使将其应用于我的实际代码,我也会收到此错误,所以这不仅仅是因为我正在尝试打印lazy_dt 表。

0 投票
0 回答
55 浏览

r - 使用 dtplyr(惰性评估)读取镶木地板分区文件 - R

我将这些镶木地板文件分区,所以在多个文件中。

我可以阅读它们

因为在真正使用它之前我必须做很多转换,所以我想要一个懒惰的 DF,这要归功于dtplyr.

我有错误

as.data.frame.default(x, ...) 中的错误:无法将类 'c("FileSystemDataset"、"Dataset"、"ArrowObject"、"R6")' 强制转换为 data.frame

如何使用lazy_dt()来读取我的数据?