问题标签 [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.
r - 计算唯一值组合的平均值
我有一个包含以下列的数据集:
这是数据框的示例:
PData
我想创建一个计算 maxFlock 平均值的新列(标记为:xmf)。但是,必须为 locID、yr、effortDays 和 effortHours 的每个唯一组合计算平均值。如果我要在上面的示例上运行代码,最终产品将如下所示。
PData
我最初尝试使用以下方法执行此操作:
但它没有用(在等待半个多小时后不得不杀死它),而且我什至不确定 ave() 是否可以做我想做的事情。
我正在考虑尝试使用拆分-应用-组合方法,但我不认为这正是我想要的,因为我必须为 locID 子集,然后为年子集,然后为努力小时或努力天,我不想不得不做出这样的选择。我想通过独特的组合来做到这一点。
如果有一种快速的方法来做到这一点,那就太好了。我正在处理的数据大约有 250 万行,因此 for 循环中的 if 语句绝对不理想。
谢谢!
python - pandas groupby中的分位数阈值/过滤器
我有一个分类变量和两个数字列:
我想通过 找到过滤后group
的平均值,以按 group限制为前四分位值。也就是说,每个组的阈值将是:var1
df
var2
这是我想要结束的循环演示:
结果应该是带有 ( group
, var
) 列的 DataFrame 或由 索引的 Series group
。我相信解决方案可能涉及.transform
/.apply
但被困在那里。
matlab - MATLAB:在 SPLITAPPLY 中使用时从 ISMEMBER 返回两个参数
如何访问ismember
内部使用时的两个参数splitapply
?
slitapply
仅返回每个组的标量值,因此为了计算每个组的非标量值(由 的第一个参数返回ismemebr
),必须将匿名函数(在本例中ismember
)括在大括号内{}
以返回元胞数组。
但是现在,当我向 提供两个输出参数时splitapply
,我得到一个错误:
Output argument "varargout{2}" (and maybe others) not assigned during call to
"@(x,y) {ismember(x,y)}"
加 1
我可以创建另一个函数,例如,ismember2cell
它将应用ismember
并将输出转换为元胞数组:
但也许有一个不需要这种解决方法的解决方案。
r - data.table:通过引用聚合、连接和分配
让我们将我要分配的表称为 dta,并将我要加入并聚合到 dta 的数据的源称为 dts。
我认为我应该能够加入“i”并在一个语句中对其进行汇总:
但唉,这行不通
替换by=i
为by=.EACHI
给出错误的结果(变量的每个值的最后z
一个dts
值i
)
完全省略 byby
只是将所有值相加dts$z
,并将相同的值分配给dta
.
现在,我可以这样做:
但似乎应该有某种方式与 data.table 内部进行交互,以便在一个有效的语句中做到这一点,而不是单独的聚合然后加入在这里完成。
我错过了什么,还是这是做事的最佳方式?我正在做非常大的联接(将具有数亿行的表合并数千次),因此能够利用我所能达到的所有效率很重要。
r - 基于另一个变量的时间延迟
鉴于:
我想到达:
我尝试了以下方法,它允许我对变量进行时间滞后,但在整个列中都这样做。我想根据 ParticipantID 或 Day 变量进行时间滞后,以便在遇到新的参与者编号或 Day=0 时,时间滞后返回“NA”:
我不确定如何添加“if”语句或基于 Participant/Day 变量。nest() 函数可能在这里工作吗?
r - 避免对 cumsum 使用 for 循环
首先生成一些样本数据:
我想要做的是以下内容:
对于df$year == 2000
,从 开始doy.range == 40
,开始相加
df$value
并计算df$doy
的累积和df$value
为 >=thres
这是我for loop
实现这一目标的长期目标:
这个循环给了我矩阵的第三列,doy
当cumsum$value
超过thres
但是,我真的很想避免循环。有什么办法可以使用更少的代码来做到这一点?
r - 通过减去 R 中的年数来计算每只动物的年龄
我正在寻找计算动物的相对年龄。对于我的数据集中的每只动物,我需要每年从下一个中依次减去。因为一只动物在一年内可以有多个生殖事件,所以我需要该年剩余事件(即第一个事件之后的所有事件)的年龄与初始计算相同。
更新:
数据集更像这样:
我需要它看起来像这样
如果我不清楚我需要完成什么,请为最初的混乱道歉。
任何帮助将不胜感激。
python - 具有宽/长旋转的 Groupby 累积平均值
我有一个看起来像这样的 DataFrame(请参阅此处的底部以获取重现它的代码):
我想按单个(分号分隔)元素进行分组,id_
并计算val
最多但不包括每个日期的累积平均值。这应该为 any 的第一次出现提供 NaN id_
,然后我将填充一些任意值(此处为 6.0)。
输出:
这是我目前的流程,很慢——可以改进吗?其次,我可以date
在最终结果中保持 col 吗?
数据框创建:
python - 使用带有扩展和自定义功能的 groupby
我有一个由truthIds 和trackIds 组成的数据框:
我希望添加一个列,为每个唯一的 truthId 计算之前与其相关联的一组唯一 trackIds 的长度(即从数据的顶部到该行):
我非常接近实现这一目标。我可以用:
产生以下输出:
这与文档一致
但是,当我尝试将此输出分配给新列时会引发错误:
我之前使用过这个工作流程,理想情况下,新列会毫无问题地放回原始 DateFrame 中(即拆分-应用-组合)。我怎样才能让它工作?
r - 合并具有 NA 和重复值的两列
数据框的子集:
我有两个字符向量country1
和country2
,我想将它们合并到一个新列中。我的数据集中没有观察到不同的国家。但是,有些对具有重复的值,我只想显示一次。还有 NA 的问题,我想在合并列中省略它,其中新列中的每个值都只有国家字符串。一些观察结果在我的两列中都有 NA,我只想在新列中保留为 NA。我想知道解决这个问题的最佳方法是什么。
我在这里用一个类似的问题对投票最多的答案中的函数进行了微小的修改,将逗号的分隔变为空。
然而,这使得重复的问题没有得到解决: