问题标签 [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 - ddply + summarise 用于在大量列中重复相同的统计函数
好的,接下来是第二个 R 问题。
我的数据:
基本上通常我会使用ddply
和的组合summarize
来计算合奏(例如全年每小时的平均值)。
在上述情况下,我将创建一个类别,例如小时(例如strptime(data$Timestamp,"%H") -> data$hour
,然后在 中使用该类别ddply
,例如ddply(data,"hour", summarize, St_01=mean(St_01), St_02=mean(St_02)...)
按每个列的类别进行平均。
但这是它变得粘稠的地方。我有 40 多列要处理,我不准备将它们一一键入作为summarize
函数的参数。我曾经在 shell 中编写一个循环来生成这段代码,但这不是程序员解决问题的方式吗?
所以祈祷告诉,有没有人有更好的方法来实现相同的结果,但击键次数更少?
python - python pandas, DF.groupby().agg(), column reference in agg()
On a concrete problem, say I have a DataFrame DF
I want to find, for every "word", the "tag" that has the most "count". So the return would be something like
I don't care about the count column or if the order/Index is original or messed up. Returning a dictionary {'the' : 'S', ...} is just fine.
I hope I can do
but it doesn't work. I can't access column information.
More abstractly, what does the function in agg(function) see as its argument?
btw, is .agg() the same as .aggregate() ?
Many thanks.
r - 删除合并时间序列中的观察值
我有一个垂直排列(堆叠)的合并时间序列data.frame
,如下所示:
在每个“项目的”子系列/子组中,我需要识别并删除*在观察到第一个正 qty_sold 的那一天之前的所有观察结果*。例如,对于“橙色”系列,这意味着淘汰第 1 天到第 4 天,而对于“锤子”系列,这意味着淘汰前 2 天。
(如果上面的解释不清楚):从数据集中的每个子系列中,我需要删除从 date = Day_1 到 date = Day_k 的所有天,这样对于间隔 1 中的每一天...... k qty_sold = 0,并保留 date = Day_k+1 qty_sold >= 0 的所有行)
任何人都可以就如何解决这个问题提出一个想法吗?实际数据集包含大约一百万行。除了 R 之外,我也欢迎使用 SAS 来完成此任务的建议。
r - R中不平衡面板上的简单移动平均线
我正在处理一个不平衡、不规则间隔的横截面时间序列。我的目标是获得“数量”向量的滞后移动平均向量,按“主题”分割。
换句话说,假设为 Subject_1 观察到以下数量:[1,2,3,4,5]。我首先需要将它滞后 1,得到 [NA,1,2,3,4]。
然后我需要取 3 阶的移动平均线,得到 [NA,NA,NA,(3+2+1)/3,(4+3+2)/3]
以上需要对所有科目进行。
如果面板是平衡的,我将首先使用 packageplm
和 function滞后“数量”变量lag
。rollmean
然后我会像这样使用包中的函数来获取滞后“数量”的移动平均值zoo
:
这将在应用于平衡“面板”DF 时产生正确的结果。
问题在于,plm
并且lag
依赖于均匀分布的系列来生成索引变量,而 rollapply 要求所有主题的观察次数(窗口大小)相等。
StackExchange 上有一个带有 data.table 的解决方案,它暗示了我的问题的解决方案:Producing a rolling average of an unbalanced panel data set
也许可以修改此解决方案以生成固定长度的移动平均线,而不是“滚动累积平均线”。
r - R中多个条件的有效条件求和
我正在努力寻找解决以下问题的有效解决方案:
我有一个大的操纵数据框,大约有 8 列和 80000 行,通常包括多种数据类型。如果满足大型数据框的条件,我想创建一个包含一列总和的新数据框。
想象一下原始数据框的头部是这样的。$years.raw 列表示公司测量了 x 年的数据。
我现在需要做的是创建一个新的数据框,根据某些字符串元素总结每家公司和每年的 $amount.inkg 列的值。我将字符串元素保存在下面的三个向量中。字符串元素是原始数据框中 $source 列的一部分。
首选数据框将如下所示:
$amount.vector1 的一般方法是: 汇总每个公司和每年的 $amount.inkg 列的值,其中原始数据框列 $source== vector1 的字符串元素。列 $amount.vector2 相同,只是元素当然不同。
如果没有可用的值,则应添加“0”而不是 NA 错误。这需要对整个原始数据框架进行,其中包括大约 250 家公司,每家公司的数据为 1:8(差异很大)。
编辑:对于数据框,我需要每年每公司一行。
我试图编写一个结合这些条件的函数,但我失败了。我对 R 很陌生,不知道如何链接这些条件并将它们应用于整个数据框。
r - 在 `dplyr` 输出中添加行
在传统plyr
中,返回的行会自动添加到输出中,即使它们超过了该分组的输入行数:
我无法弄清楚如何在dplyr
. 一些尝试:
我该怎么做呢?
我要反对的特定用例是拆分 - 分隔的\n
文本字段并使其“长”,但我一直将此功能ddply
用于许多目的。
r - 基于R中的两个因素未拆分的缩减数据表
假设我在 R 中有一个数据框,我想使用 2 列“factor1”和“factor2”作为因子,并且我需要计算每对上述因子的所有其他列的平均值。运行下面的代码后,最后一行给出以下警告:
...
为什么会发生这种情况,我应该怎么做才能使它正确?谢谢。
这是我的代码:
EDIT1:添加数据框创建(见上文)
java - Java ArrayList 将当前项目添加到上一个项目;删除当前项目
代码的目的是遍历 ArrayList> listOfLists 中的每个项目并将前一个列表组合到当前列表,对当前列表进行排序并删除下一个列表(因为已经组合)。这需要发生,直到只剩下一个列表。有了它,我可以将 ArrayList.get(0) 的内容吐出到文件中。
listOfLists 是在代码片段之前定义的。我正在努力解决的是:如何将 alStr1 内容发送回 listOfLists.get(0)?
非常感谢您提供的任何建议。谢谢
这将解释我想要实现的目标。请原谅我没有先添加这个。
c++ - 如何加速这个 Rcpp 功能?
我希望实现一个简单的split-apply-combine
例程,Rcpp
其中将数据集(矩阵)分成组,然后返回分组列的总和。这是一个在 中很容易实现的过程R
,但通常需要相当长的时间。我已经设法实现了一个Rcpp
性能优于 的解决方案R
,但我想知道我是否可以进一步改进它。为了说明,这里有一些代码,先供使用R
:
事实证明,for
-loops 实际上非常快,并且是最容易(对我来说)实现的Rcpp
. 它的工作原理是为每个组创建一个子矩阵,然后调用colSums
该矩阵。这是使用实现的RcppArmadillo
:
但是,根据对这个问题的回答,我了解到创建副本的成本很高C++
(就像在 中一样R
),但循环并不像在 中那样糟糕R
。由于- 解决arma
方案依赖于submat
为每个组创建矩阵(在代码中),我的猜测是避免这种情况会进一步加快进程。因此,这里是基于Rcpp
仅使用循环的第二个实现:
对这些解决方案进行基准测试,包括use_dt
@Roland 提供的版本(我以前的版本不公平地歧视data.table
),以及dplyr
@beginneR 建议的解决方案,产生以下结果:
我的直觉(use_Rcpp
优于use_arma
)结果并不正确。话虽如此,我猜if (G(i) != g_id) continue;
我use_Rcpp
函数中的行会减慢一切。我很高兴了解设置它的替代方法。
我很高兴我用一半的时间完成了同样的任务R
,但也许这几个Rcpp is much faster than R
例子已经超出了我的期望,我想知道我是否可以加快速度。有人有想法吗?我也欢迎任何一般的编程/编码评论,因为我对Rcpp
和C++
.
python - Pandas 多索引数据框将列中的第一行设置为 0
我在处理 pandas 中的分组对象时遇到了一些麻烦。具体来说,我希望能够将列中的第一行设置为 0,同时保持其他行不变。
例如:
给我
我将它们按 A 分组并按 B 排序:
得到这个:
现在我有了组,我希望能够将每个组中的第一个元素设置为 0。我该怎么做?
像这样的东西会起作用,但我想要一种更优化的方法:
任何帮助将不胜感激,谢谢!