问题标签 [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.
r - data.table 对象上的 dtplyr 和计数冲突
似乎是什么时候dtplyr
安装的dplyr
,data.table
我遇到了这个问题
这曾经有效,但现在不行。为什么会这样?
此外,当我在没有dtplyr
它的情况下运行此过程时,但没有dtplyr
提供的优势。
我正在使用这些软件包的最新版本(0.7.0、1.10.4、0.0.2 dplyr
)。data.table
dtplyr
r - 通过 dplyr::filter 传输时如何保留 data.table 类?
我有一个 data.table 对象,我通过几个 dplyr 函数进行管道传输。
当通过 时dplyr::select
,结果对象的类是 data.table + data.frame。
但是当我通过它时dplyr::filter
,输出类只是 data.frame 。
为什么会发生这种情况,如何确保在使用时保留 data.table 类dplyr::filter
?
r - 在函数内部使用 dplyr::tbl
我现在有关于在函数内部使用 dplyr 的各种答案,但我尝试了所有方法,但都没有奏效。
这是我的简单功能:
我尝试了智慧rlang::!!
和其他方法,但都没有奏效。这应该很简单,但我无法让它工作。
r - 将 dplyr 转换为 data.table
所以我正在尝试翻译一些 dplyr 代码。我试图从将 dplyr 转换为 data.table 的包中获得帮助,但它仍然不起作用。错误row_number
来自dplyr
..
我需要dplyr
代码中的所有步骤(即使它们在这里没有意义mtcars
)
由reprex 包(v0.3.0)于 2019 年 7 月 14 日创建
r - 在与 dtplyr 冲突的列连接后选择
如果我运行以下简单示例,我会得到预期的输出:
请注意,使用添加和后缀a
的标准dplyr
格式正确管理冲突的列。.x
.y
但是,如果我现在尝试删除其中一列:
有趣的是,如果我尝试选择其中一a
列 ( select(a.x)
),我会得到相同的错误,但是...select(a)
其中选定的列是明确的dt1$a
,但由于某种原因,给定的列名是a.b
。(如果我尝试select(a.b)
,我会得到同样的object not found
错误)。
同时,如果我尝试 drop a
,两a
列都会被删除:
那么,如何select
在表具有冲突(而不是连接)列的连接中使用?
编辑:
正如一些答案中提到的,我显然可以在选择之前执行惰性评估,这很有效。但是,它会引发警告(因为我想将我的对象保留为 a data.table
,而不是 a data.frame
)所以它似乎不是预期的方法:
r - 使用 dtplyr 的 group-filter-select 翻译不正确
使用 dplyr 可以轻松执行 group-filter-select。在下面的例子中,我们有一些公司今年不同季度的数据。我现在想过滤到第一季度没有第四季度数据的公司(在本例中是第二家公司),去掉季度标签。
但是,对 dtplyr 执行相同操作会返回一个空表:
奇怪的是显示的翻译:
这是不正确的。如 dtplyr's own docs中所述,正确的调用需要使用过滤.SD
:
(副栏是自动包含的,所以.SDcols
应该省略它们以避免重复)
有趣的是,如果我们省略select
,则翻译(因此输出)是正确的:
因此,作为一种解决方法,我可以as.data.table()
在select
. 这可行,但会引发烦人的警告:
我很难认为这是预期的行为,但想在将其扔到dtplyr
Github 跟踪器之前检查这里。
r - 我不能在 data.table 中使用 dtplyr 做什么
我应该把我的学习精力投入到 R 中的数据争论上,特别是在dplyr
和dtplyr
之间data.table
吗?
我
dplyr
主要使用,但是当数据太大时我会使用data.table
,这是一种罕见的情况。所以现在dtplyr
v1.0 作为一个接口出来了data.table
,从表面上看,我似乎再也不用担心使用这个data.table
接口了。那么目前无法使用的最有用的功能或方面是
data.table
什么,并且可能永远不会使用?dtplyr
dtplyr
从表面上看,它
dplyr
的好处data.table
听起来像是dtplyr
会超车dplyr
的。dplyr
一旦dtplyr
完全成熟,会有什么理由使用吗?
注意:我不是在问dplyr
vs data.table
(如data.table vs dplyr:一个人可以做得很好,而另一个人不能或做得不好?),但考虑到对于特定问题,一个人比另一个人更受欢迎,为什么不呢?不是dtplyr
要使用的工具。
r - 根据以前的值更新列值(一次处理总是处理)
我想知道是否有更快的方法使用 data.table/dplyr 来按组替换基于先前值的值。
假设我的原始数据表如下所示:
这看起来如下:
在这里,对于每个人(姓名)和时间段(年),有一列(治疗)表明他们是否已被分配治疗。
我正在考虑另一种治疗方法,即一旦对个体进行治疗,该个体将继续接受治疗。因此,修改后的数据表应如下所示:
请注意,对于 A 人,在 2001 年接受治疗意味着他们在接下来的几年中也接受了“治疗”。
因为我有一个非常大的数据表,我想知道是否有一种非常快速的修改方法来实现这一点。
r - 从 dtplyr 粘贴 data.table 代码会导致代码变慢
我今天开始将我的一些代码从 dplyr 迁移到 dtplyr,当我意识到从调用 lazy_dt()无需调用 as_tibble()。从这里我可以注释掉 dtplyr 代码以保持 dplyr 的可读性,同时获得 data.table 的速度。
然而,当我这样做时,我注意到 dtplyr 会输出有时比它的 dtplyr 对应物慢的 data.table 代码。由于翻译成本,这似乎违背了 dtplyr 应该总是比 data.table 慢的直觉。任何想法为什么会这样?该文档指出,将 dplyr::mutate 翻译为 data.table 术语并不理想。这也许是原因?
代表:
有趣的是,这里的 dtplyr 似乎并不总是比 data.table 慢。我不确定为什么我会看到我在这里看到的东西。
编辑:改写问题更清楚。我的想法是,如果我永远不必向任何人展示我的代码,那么我应该始终使用 data.table,因为它比 dtplyr 快。然而,根据我的基准测试经验,似乎有些情况下 dtplyr 比 data.table 快。为什么?直觉似乎表明这永远不会发生。我误解了 dtplyr 的作用吗?