问题标签 [rowwise]

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 投票
1 回答
719 浏览

r - dplyr rowwise and mutate with custom function 返回意外的输出

我有一个在 R 中看起来像这样的数据框:

我写了两个我想应用于每一行的琐碎函数:

prop_test_ctr函数使用prop.testR 的 stats 包中的函数来检验几组的比例相同的原假设;这$p.value是我在这里抓取的输出值,它对应于测试的 p 值。

add_one_to_group函数是一个简单的函数,可以为 df 中的每个 group_num 添加 1,因此我可以验证 rowwise() 是否按预期工作。

当我尝试results通过使用 dyplr 将这两个函数应用于每一行来构建一个新的数据框rowwise()时:

它产生这个输出:

p_value_ctris 列不正确的地方 - 它不是计算每行的点击和打开差异的 p 值,而是计算组 2,3 组合的 p 值和函数中硬编码的值prop_test_ctr(34000和 999000)。

add_one_to_group函数在使用 of 时按预期工作,rowwise()p_value_ctr不是。函数返回的 p 值p_value_ctr实际上等于我运行的值:

似乎列的向量clicks以及第 2 组和第 3 组的向量都被传递给函数,而不是仅一行opens的预期列值(因此.rowwise()

我知道还有其他方法可以做到这一点,但特别好奇我是否可以在这里停留在 dpylr 宇宙中(而不是使用 sapply() 然后将这些结果与原始 df 绑定,例如),因为看起来应该是的预期行为rowwise();我刚刚把事情搞砸了。

谢谢您的帮助!!

0 投票
2 回答
866 浏览

r - 使用 mutate 和 rowwise 返回列表

我正在尝试使用 mutate 和 rowwise 返回一个列表,但得到代码中显示的错误。这些问题Q1 Q2有所帮助,但我想通过使用 迭代行来保持简单rowwise(),这些问题已经 3 年 7 个月了。谢谢。

0 投票
1 回答
1462 浏览

r - 如何在 R 中的管道中使用 dplyr 的 rowwise() 来应用一个将列表返回到每一行的函数?

我想使用 dplyr 的 rowwise() 和管道将函数(返回列表)应用于数据帧中的每一行。

包含两行的测试数据集:

定义一个简单的函数(它是关于一个返回列表的函数,显然不是关于添加 8):

这就是我想要实现的目标:

它返回一个包含 2 个列表的列表(我想要的输出)。

我想将这些列表保存为小标题中的一列。我们可以这样做:

我宁愿使用 dplyr 而不是混合 dplyr、base 和管道(也是为了代码的可读性),但我不明白为什么这不起作用:

这两个函数都将函数应用于整个数据帧而不是单独的行。这对我来说毫无意义: test_tbl %>% rowwise() %>% simple_function与(在输出方面)相同test_tbl %>% simple_function

这确实提供了所需的输出,但我发现它相当冗长且不理想,我必须自己绑定列:

rowwise()非常感谢任何有关失败原因的帮助。

0 投票
2 回答
160 浏览

r - 对数据框行应用函数

我正在尝试在数据框的行上应用一个函数,并根据列中每个元素的值返回一个值。我宁愿传递整个数据框而不是命名每个变量,因为实际代码有很多变量——这是一个简单的例子。

我已经尝试过purrr map_dblrowwise但都无法工作。请问有什么建议吗?

0 投票
1 回答
810 浏览

python - python - 如何在没有for循环的稀疏矩阵中随机选择每行一个非零元素

我有一个大的稀疏矩阵,其每一行包含多个非零元素,例如

我希望能够在没有 for 循环的情况下每行随机选择一个非零元素。有什么好的建议吗?作为输出,我对所选元素的索引比它的值更感兴趣。

0 投票
2 回答
3547 浏览

r - dplyr mutate - 如何将一行作为函数参数传递?

我正在尝试在我的 tibble 中创建一个新列,该列收集并格式化在所有其他列中找到的所有单词。如果可能的话,我想使用 dplyr 来做到这一点。原始数据框:

作为一个简化的例子,我希望做一些类似的事情:

并让输出看起来像这样:

当我在我的代码中尝试这个时,输出如下所示:

myFunc 应该将一行作为参数,但是当我尝试使用 rowwise() 时,我似乎将整个 tibble 传递到函数中(我可以通过在 myFunc 中添加打印函数来看到这一点)。

我怎样才能只传递一行并迭代地执行此操作,以便将函数应用于每一行?这可以用 dplyr 完成吗?

编辑:

为了我的问题,示例中的 myFunc 进行了简化。实际功能如下所示:

0 投票
1 回答
345 浏览

python - 如何在python上从多个CTD数据文件(多个数据文件中相同变量的行平均)中找到平均CTD配置文件

我很难写出这个问题。我有多个 CTD 数据文件(包含海洋温度值和深度的文件)。我将它们绘制在一个图形上,以查看温度如何随深度变化。我现在想做的是绘制平均温度(在所有文件中)与深度的平均分布(仅一行)。因此,就像来自多个数据文件的每个变量的逐行平均值一样。

我的数据是 cnv 格式,它只是一列温度值和另一列深度值。每个数据集没有相同数量的深度和温度值(即不同的行数)。

这就是我的代码看起来只是为每个文件分配的样子,我附上了它产生的数字:

绘制的每个 CTD 数据集的图

我希望我的问题是有道理的。

非常感谢

0 投票
1 回答
410 浏览

r - 如何动态有条件地过滤 R 数据框中的行

假设我有一个如下所示的有序数据框:

如何使用以下业务规则在 R 中编写脚本:如果客户在同一个月结束并开始,并且价格没有变化,则删除最新交易。否则,保留交易。生成的数据框如下所示:

在此示例中,cust1 的 2017-08-01 被忽略并过滤掉,因为价格与他们之前的交易相同。但是由于价格不同,cust3 的交易被保留。

我怎样才能在 R 中做到这一点?

0 投票
0 回答
268 浏览

r - 如何有条件地在 r 数据框中逐行执行 if/then 语句

假设我有两个这样的数据框:

目标:有条件地测试df1的每一行是否有优惠券。如果是这样,则乘以它在 df2 数据框中的百分比,以将最终价格降低指定的数量。如果它没有保持最终价格不变。

我想我已经接近了,但我没有明智地做事。我正在做类似的事情,

但这不能正常工作。

帮助?

0 投票
2 回答
756 浏览

r - dplyr 中的逐行操作、选择助手和 mutate 函数

我将使用以下数据集来说明我的问题:

第1部分

我使用该mutate()函数在我的数据集中创建两个新变量,并且我想计算同一mutate()调用中两个新列的行均值。但是,我真的很希望能够使用,或select()等助手。starts_with()ends_with()contains()

我的第一次尝试:

我理解为什么会出现错误 - 该select()函数没有给出任何.data参数。所以我把代码改成...

...我第二次尝试.select()函数中添加“”:

第二次尝试后的新问题是该mean列不包含预期的a_2和的均值,而仅包含s。在研究了一下代码之后,我理解了第二个问题。函数中添加的“ ”是指原始数据框,没有and列。所以产生 s 是有道理的,因为我要求计算不存在值的均值。b_2NaN.select()my_dfa_2b_2NaNR

然后我尝试使用dplyr功能,例如current_vars()看看它是否会有所作为:

但是,这显然不是使用此功能的方式。解决方案是简单地添加第二个mutate()函数:

问题 1:有什么方法可以在同一个mutate()调用中执行此任务?无论如何,使用第二个mutate()功能并不是真正的问题。但是,我很想知道是否存在引用当前存在变量的方法。该mutate()函数允许在同一mutate()调用中创建变量后立即使用它们;但是,当函数嵌套时,这会成为问题,如我上面的示例所示。

第2部分

我也意识到rowMeans()在我的解决方案中使用是有效的;但是,它并不是一种真正的dplyr做事方式,尤其是因为我需要在其中使用select()它。所以,我决定改用rowwise()andmean()函数。但是再一次,我想为此使用其中一个select()助手,而不必列出c()函数中的所有变量。我试过了:

ends_with()我怀疑代码中的错误是由于不在 inside的事实select(),但我展示这个是为了询问是否有一种方法可以列出我想要的变量而不必单独指定它们。

感谢您的时间。