问题标签 [across]
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 - 如何跨多个列匹配列并在新列中返回匹配的 col_name
假设我有一个数据集 df,其中我想X
在多个列的值之间匹配 col 的值,A to F
并希望在新列中返回匹配的列名(否则 NA)。
输入
我想要的输出
我会更喜欢dplyr
/tidyverse
语法,我将集成到我现有的语法中。
r - 使用 `mutate(across(where(is.numeric) , some_function))` 代替 `mutate_if(is.numeric, some_function)` 有什么好处吗
从 dplyr 1.0.0 开始,该across
函数已取代旧的mutate_if
和summarise_at
type 函数。
每当我使用across
tomutate
或summarise
跨满足某些谓词(例如is.numeric()
)的列时,我发现自己想知道为什么我要使用这种长宽的语法。
我有一个模糊的想法,即新语法对于某些用例来说更加通用,但是当我的需求是一个简单的谓词变异时,使用是否有任何优势(除了遵守推荐的最佳实践)
mutate(across(where(is.numeric), some_func))
更简洁(在我看来更容易理解)
mutate_if(is.numeric, some_func)
r - tidyverse 与粘贴的外部向量一起使用,其中包含要变异的列名
让我们假设以下数据:
让我们进一步假设我有一个包含我想要处理的列名的向量,例如
现在我想要做的是改变对象中除第一个元素之外的所有列,df
使用. (在这种情况下,我会循环遍历我的两个 var_names 对象)。var_names_...
across
所以在第一个循环中我想改变列 x 和 y,在第二个循环中我想改变 z。
但是,我收到此错误消息:
我以为我终于了解了一些 tidyeval 事物的用例,但显然我的!!sym
方法在这里行不通。有什么建议么?
r - 如何转换这个旧的 dplyr 语法?
我是 dplyr 的新手,我在 (i) 理解它的语法和 (ii) 将其旧版本代码转换为我可以在其最新版本 (dplyr 1.0.2) 中使用的代码方面遇到了困难。特别是,我对以下两行代码感到困惑:
我认为第一行代码应该用 NA 替换所有“未回答”。
你认为下面的变换合适吗?
但是,我不明白第二行代码是关于什么的。我相信这是关于创建某种有序变量,其中“完全没有”、“每周一次”、“每周 2-4 次/一半时间”和“每周 5 次或更多次/几乎总是”作为级别.
您对这一行的作用以及如何使用 mutate(across()) 将其转换为新语法有什么建议吗?
一些上下文
我正在尝试遵循有关如何使用 Bootnet R 包的教程。以下文字来自教程第一部分
要下载数据集,请访问: https ://datashare.nida.nih.gov/study/nida-ctn-0015并单击“CTN-0015 数据文件”。相关数据文件称为“qs.csv”,可以使用默认的 read.csv 函数将其加载到 R 中:
FullData <- read.csv("qs.csv", stringsAsFactors = FALSE)
这会以长格式加载数据,其中包含带有主题 ID 的列、带有管理项目名称的列以及包含项目响应的第三列。对于网络分析,我们需要数据是宽格式的。此外,我们需要指定响应“NOT ANSWERED”表示缺少响应,而其他响应是有序的。最后,我们需要在 PTSD 症状频率评分的基线测量中提取相关数据集。为此,我们可以使用 dplyr 和 tidyr R 包,如下所示:
本教程的第二部分继续进行。
r - 如何在 dplyr::across() 中使用 n() 按组计算行数?
在以前版本的 dplyr 中,如果我想使用 获取除其他汇总值之外的行数summarise()
,我可以执行类似的操作
我的直觉是使用新across()
功能获得相同的输出
问题是特定于n()
函数的,只是调用sum()
按预期工作:
我尝试了各种语法变体(使用 lambdas、试验cur_group()
等),但无济于事。我将如何获得所需的结果across()
?
r - 将 dplyr::across 与两组变量一起使用
我有两组变量,例如 variablea
和 variable a_avail
。我正在尝试根据 的值更改 的a
值,a_avail
并且想知道这是否可以使用across
with来完成glue
。
这是我尝试过的。没有产生错误,但胶水似乎没有拾取 的值,.x_avail
因为所有返回的值都是 NA:
由reprex 包(v0.3.0)于 2021-02-12 创建
r - tidyverse 解决方案,用于将多个列重新编码为列名后缀增加一的新列
这只是伪代码,但假设我有 22 个列,从 Q46x47_1 到 Q46x47_22。
我现在想应用以下重新编码逻辑:
当然,我不想手动输入。所以我想知道是否有一种优雅的方式来批量重新编码。我知道across
,但我没有看到如何通过增加的后缀号传递每个第二个变量的方法。
所以我开始:
我的问题是(假设 if_else 可以在这里使用)如何...
在 if_else 命令中指定我需要传递 LHS 列名的部分。
有任何想法吗?
具有列子集的简短可重复示例:
r - 在 R 中的自定义 ifelse() 中调用数据变量
我正在尝试编写一个ifelse()
我想传递给dplyr::mutate(across())
. 该函数应将 中指定的列中的 NA 值替换across()
为名称相似的列中的值。
例如,在以下虚构数据中,我想用 替换缺失x_var1
和y_var1
缺失:x_var2
y_var2
我尝试构建以下函数:
但它似乎不起作用。
但是,如果我直接运行这个单变量案例ifelse
,我会得到预期的结果。
如何构建允许我调用数据变量的自定义 ifelse 语句?
编辑:我得到以下适用于多变量情况,但仍在使用ifelse
而不是不同的功能。
r - 跨越多个论点
这可能是一个非常愚蠢的问题,关于“跨”功能的应用,该功能具有多个列并且每个列都应用了不同的乐趣。例如,下面是来自“iris”数据的示例,其中以“Sepal”开头的列名被平均。如果我连同这个我想取以“花瓣”开头的列的中位数怎么办。如何在同一个摘要中给出两种不同的列类型和乐趣?