问题标签 [split-apply-combine]

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 回答
366 浏览

r - 计算平均值并在 R 中添加新行,但反映在特定列的所有条目中

我有如下数据集,我将其作为 csv 文件读取并将数据帧加载为df

如果我在 R 中执行以下命令,

我得到这样的输出,

但是需要找到Value2Value1的平均值并将结果存储在一个单独的列中,比如每个条目的value1_meanvalue2_mean ,

我怎样才能得到上面的输出?

0 投票
1 回答
257 浏览

r - split apply combine w/function or purr package pmap?

这是我要解决的一个大问题。如果我有足够的声誉来奖励赏金,我会的!

希望平衡销售代表的帐户区域。我的流程被打破了,我真的不知道如何在每个地区进行。

在此示例中,有 1000 个帐户,跨 4 个区域,每个区域有 2 个子联盟,然后是帐户的不同所有者——有些帐户是无主的。每个帐户都有一个介于 1,000 和 100,000 之间的随机值。

可重现的例子:

账户列表:

区域所有权摘要:

按地区、联赛汇总:

这就是所有的起始数据,我想对 Summary2 表的每个分组进行以下处理。

西部未成年人示例:

西部未成年人账户总数:120

更新所有者后,我们将各个部分重新绑定在一起,以拥有 WestMinors 帐户库,所有这些都具有更新的所有者,希望是平衡的。

没有人拥有超过 14 个帐户或 600,000 个帐户,因此我们可以开始重新分配无主帐户以尝试平衡每个人。下面的 for 循环查看 OwnerSummary 中的每个名称,找出分配给他们的 $$ 最小的人并分配最有价值的帐户,然后遍历每个帐户,尝试平衡每个所有者的份额。

现在我们只需将之前拥有的和新分配的绑定在一起,我们就完成了平衡的 West Minors 领土。

每个人的账户数量都差不多,总的 $$ 领土都在合理范围内。

现在,我正在尝试对原始 4 个地区、2 个联赛的每个分组进行此操作。所以这样做8次,然后把它们缝合在一起。每个子组都有不同的 $$ 价值阈值,以及帐户数量。如何将原始帐户基础拆分为 8 个部分,应用所有这些,然后将其重新组合在一起?

0 投票
0 回答
163 浏览

r - split apply 与 dplyr 结合使用,并使用函数

我有一个数据框,我通过分组进行拆分,然后使用 do() 在每个分组部分上运行一个函数。我遇到的问题是函数内部有一个变量需要根据每个不同的组进行更改。我该如何解释呢?

数据按地区和联赛分组。

这是我将传递给数据的每个分组版本的函数的一部分。

在按 Region、League 分组之后,它被传递给函数,并在函数内部按 Owner 分组。在下面的这个函数中,我需要传递一个不同的值cumsum(AccValue) > 600000 | row_number() > 14。600000 AccValue 和帐户数需要根据它所在的组进行更改。我有另一个 df 详细说明了所有这些内容。

我怎样才能改变

mutate(NewOwner = replace(Owner, cumsum(AccValue) > 600000 | row_number() > 14, NA)) %>%

成为

mutate(NewOwner = replace(Owner, cumsum(AccValue) > MaxValue | row_number() > MaxCount, NA)) %>%

并将正确的列表传递给每个 MaxValue 和 MaxCount 变量?

0 投票
2 回答
144 浏览

r - 正确使用 dplyr 函数在滑动窗口中计算每个产品的销售额,而不需要额外的传递或加入?

给定由以下定义的数据框:

我想添加一个新列,其中第 i 行的新值所有成本值的总和,其中:

  • 日期小于或等于第 i日期且大于第 i日期减去 90 天
  • x 值等于第 i 行的 x 值。(在此示例中,x 和 date 的组合是唯一的,但通常它们可能不是。)

我可以通过两种不同的方式做到这一点:

两者在我的大数据上都相当慢,大概是因为所有的子集。我正在将数据框传回计算中,这对我来说有点像黑客攻击。

有没有办法在 内“正确”地做到这一点dplyr?我的意思是,无需传入数据框并进行缓慢的子集设置。

或者如果没有,是否至少有一种更有效的方法来做到这一点?

0 投票
1 回答
673 浏览

python - 分组转换中的熊猫时间戳差异

我有一个带有整数索引、session_id、事件和时间戳的数据框,如下所示:

我想使用groupbyby 和一个lambda函数来计算会话长度,但我想返回一个索引与原始数据帧相同的系列对象,以便我可以将其添加为列。这应该是可能的groupby.transform,但它返回一个奇怪的“无法将对象转换为 numpy 日期时间”错误:

我以为我用错了,但是当你使用它时groupby.agg,它起作用了!

你能否解释一下这是否是一个错误,如果不是,我做错了什么?谢谢!

ps 不想使用时间戳索引,因为我可能在实际数据中有重复的时间戳。

0 投票
2 回答
84 浏览

r - 如何根据 Profit 和 NumberDays 对 DF 和小计进行排序

我有一个看起来像这样的 CSV 数据..

此文件中有数百万行。我想根据 CUSIP 对所有交易进行排序,然后根据利润和 Over365Days 对结果进行小计。这是最终结果应该是什么样子的图像。我只是为效果添加了一些颜色。

在此处输入图像描述

我猜它应该是这样的:

我可以在 Excel 中轻松管理小型数据集,但同样需要处理数百万行。有人可以给我一些可以做我描述的示例代码吗?谢谢大家。

0 投票
2 回答
415 浏览

r - R Data transform - Columns to Rows and aggregate

I'm struggling with a data transformation in R. The data I receive is of this type:

And the output I'm trying to achieve is:

Where the intersections are the counts of observations matching the condition (which are now in the first column) and the row sums (which are now separate columns).

My solution is below but I'm wondering if there is a more elegant solution?

0 投票
0 回答
710 浏览

r - 对数据帧的所有子集应用函数

我正在尝试根据两列中的值将函数应用于数据框的每个子集。以下示例是我的问题的简化表示。

说我有以下数据框

t是一个时间步长。并且我想基于 a 和 b 值对每个子集应用一个连续函数(意味着我不能只在子设置之前为每一行应用函数,这将使任务更容易),即每个df[df$a==A & df$b==B,]whereA=1,..,5B=11,...,15. 例如

并且我想要使用的函数取决于所有三个变量(a, b and t)(例如,最后一步的结果a^2+b*t-c在哪里c,这就是为什么我不能在子设置之前为每一行应用该函数)。我尝试使用split/subsetapply. 但我无法解决。有人可以帮忙吗?

0 投票
1 回答
51 浏览

dplyr - 基于另一列分配列值(拆分应用组合)

我有格式的数据

对于每个主题,我想修改 status 的值,以便:a)在获得 test1 的最早(按测试日期)pos 或 neg 结果之前,它仍然是未知的;b) 当获得第一个 pos test1 结果时,该日期和之后的状态变为“in”,无论任何后续 test1 值如何;c) 如果 test1 在任何阳性结果之前出现阴性结果,则该日期和后续日期的状态变为“out”,直到获得任何阳性 test1 结果。对所有解决方案开放。我正在试验 dplyr,并且会对基于 dplyr 的解决方案特别感兴趣。

输出将是

0 投票
2 回答
690 浏览

python - Pandas 将函数应用于组,并过滤​​原始数据框

我有一个包含对象及其坐标的 DataFrame:

多个对象可以有相同的坐标。数据框很大(数百万条记录)。我有一个带坐标的目标点(target_lat, target_lng)。我的目标是尽可能高效地在数据框中找到距离目标点 X 英里以内的对象。

我正在使用haversine_np改编自这个问题的功能。它接受参数并有效地计算(两个系列)和(两个数字)(lat_series, lng_series, lat, lng)之间的所有距离。lat_series, lng_series(lat, lng)

现在我的问题是如何使用它来过滤距离并选择原始数据框中的对象。

这是我目前的解决方案:

它似乎有效,虽然看起来不可靠,因为当我使用 选择相关的组索引时pd.Series(range(grouper.ngroups))[mask],我假设分组的级别值是自然索引的(从 0 到 ngroups-1)。换句话说,我依赖于i-th元素 ingrouper.result_index.get_level_values()对应于带有标签iin的组这一事实grouper.group_info[0]。我找不到更明确的方法来获取该映射。

问题:

  1. 我使用的方法可靠吗?
  2. 有没有更好(更安全/更简洁/更高效)的方法?