问题标签 [tidyselect]

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 投票
3 回答
110 浏览

r - 由于 .key 已被弃用,如何重命名 nest() 中的数据列?

.key被弃用之前,我这样做了:

的帮助nest()指出,现在这是使用 tidy select 执行的,但我不知道如何。

0 投票
1 回答
57 浏览

r - 将 tidyselect 辅助函数添加到向量

我经常为我在编码时最常使用的变量创建一个“向量”。通常,如果我只是在其中输入矢量对象,select它就可以完美地工作。有什么方法可以在字符串的辅助函数中使用吗?

例如我可以做

但这并不可取,因为 1)select_已弃用,2) 它不可扩展(即,x = c('hp', 'matches("cyl")')不会同时获取相关列。

无论如何我可以在向量中使用更多的 tidyselect 辅助函数吗?

注意:如果我这样做:

我得到一个错误,所以我肯定需要以enquo某种方式。

0 投票
1 回答
105 浏览

r - 从 psych::describe 替换数据帧中模式的平均值

我喜欢 psych::describe 的汇总统计数据,但我想用众数替换平均值,但仅适用于因子变量。如何对 Mode 的输出进行编程以替换 setosa(或任何其他因素变量) 我使用 iris 进行复制,即使它只有一个。

如何根据变量的结构来组合均值和模式?

  1. 有没有办法结合if_elsewhere 告诉 R 什么时候做什么FALSE?如果当变量不是一个因素时我能得到输出的平均值,我会得到一个结合了平均值和模式的列。

Psych生成一个数据框,其中标识变量名称不可选择,因此这使得任何手动编码或在 mutate() 中列出变量都是不可能的。它们也是我数据集中的大多数变量(因此即使可以完成手动或 mutate(case_when) 也会非常乏味)。

PS。我尝试更改我apply()的 tomap函数,但输出与 the 不兼容,cbind()因为它会列出每个因素的其他级别。如果您对代码的那部分有更好的想法,或者认为这是我可以结合的地方getModemean()我不介意建议。

0 投票
1 回答
70 浏览

r - 如何将 tidyselect 样式的列名列表拼接到我的函数的调用中

我正在尝试编写一个对分组数据框进行重复数据删除的函数。它断言每个组中的值都相同,然后只保留组的第一行。我试图给它提供类似 tidyselect 的语义,pivot_longer()因为我只需要将列名转发到summary(a = n_distinct(...))调用中。

所以对于一个示例表

我期待调用remove_duplicates(test, c(v1, v2))(使用 tidyselect 助手c()返回

但我明白了

我尝试使用新的“拥抱”语法来解决这个问题(参见下面的函数代码),但失败并显示上面显示的消息。

我认为我需要以某种方式指定表达式的评估上下文vars必须更改tab为当前正在评估的子数据框substitute。所以像

但我对技术细节的了解不足以真正完成这项工作......

0 投票
1 回答
38 浏览

r - R:将 mutate 调用从处理三个二进制变量调整为 n 个二进制变量

我有一个数据框,其中包含与时间段 1 相关的 3 个二进制变量和与时间段 2 相关的三个相应变量。

我想知道观察是否在第 1 期但在第 2 期没有1给定item。此外,我想知道观察是否有任何实例,其中项目1在第 1 期而不是第 2 期。

所以理想的输出看起来像

到目前为止我已经尝试过

我想概括上述 mutate 调用,以便它们可以处理 n 个项目,而不仅仅是 3个。 有没有一种方法可以ends_with('check')用于最终的 mutate?变量名称没有变化,但项目编号和时间段不同。

0 投票
1 回答
55 浏览

r - 使用 dplyr::select 进行评估在我的函数中不起作用

我对处理 R 中的评估问题真的很陌生。

这是我要编写的函数:

该函数选择一个数据框df并按列将其连接到自身col_pair。问题是,如果我运行f(example, pairs0),我会得到“连接列必须存在于数据中”

有人可以帮忙吗?

0 投票
3 回答
1958 浏览

r - 无法使用 dplyr rename() 和 rename_with() 重命名重复的列名

给定具有重复列名的 tibble 或 data.frame ,我想使用dplyr::renameor dplyr::rename_with
(a)用序列数字后缀('a_1''a_2'等)区分重复的名称,或者
(b)完全重命名每一列。

有:

想:

期望rename/rename_with可以执行此操作似乎是合理的,尤其是因为colnames(d) <- c("a_1", "a_2")看起来很明显且不复杂。

但是到目前为止,我尝试过的三种方法都出现了不同的错误和/或意外行为:

1.使用rename(),一列重命名,另一列不重命名:

2.使用rename_with(),其中我使用函数添加数字后缀,我收到此错误:

请注意,rename_with当数据没有重复的列名时,这种使用按预期工作:

3.使用旧的rename_all(),我得到一个不同的错误:

rename我在GitHub 问题中找到了关于处理重复项的讨论tidyselect但那是关于如果用户使用创建重复的列名rename()该怎么办,而不是如果他们试图取消重复该怎么办。

我是否缺少语法,或者该dplyr::rename系列没有设置为摄取重复的列名?

(我还想更好地理解为什么rename在上面的示例中只重命名一列,但这不太实用,只是我很好奇。)

提前致谢。

0 投票
2 回答
362 浏览

r - 我可以用starts_with 对列进行分组吗?

我正在处理一个大数据框,该数据框有许多我想要分组的列。我想做这样的事情:

有没有办法做到这一点?也许使用 group_by_at 或其他类似功能?

0 投票
1 回答
187 浏览

r - 选择多个日期列并将因子变量转换为日期

我有一个 data.frame,其中包含多个包含日期的列。目前它们被认为是“因子”类。我想选择所有应该是日期的列(其中有 10 个,它们的名称中都有“日期”,例如 Date_Construc、Date_use、Comp_date ...)并将它们从 factor 转换为 date

这是我尝试过的:首先我想选择向量中的相关列

然后

也试过

我明白了

结果,

这是当前格式的示例数据:

0 投票
1 回答
166 浏览

r - 为什么可以在 dplyr 辅助函数“across”中检测到 tidyselect 辅助函数“where”?

“tidyselect”包提供了一个选择帮助函数wherewhere用于选择具有自定义功能的数据框列。它是“tidyselect”的一个内部函数。这意味着where不会加载到您的命名空间,您只能通过tidyselect:::where.

但是,我从dplyr 小插图中看到了以下示例: columnwise operations 。

在这个例子中,where没有前缀“tidyselect:::”,但很明显,代码中没有错误,它产生了有意义的结果。这对我来说似乎很奇怪。我想知道为什么代码正常运行。

我想这是由于“代码引用”,这是 tidyeval 方法的一部分。粗略地说,代码引用将代码作为表达式挂起,然后在“内部环境”中评估表达式。这只是一个直观的猜测,我不知道如何测试它。

我希望有人可以帮助我解决“哪里”问题,或者为我留下一些关于代码如何运行的参考。