问题标签 [plyr]

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

r - 使用 ddply 时保留有序因子

我用ddply的很多。我偶尔使用有序因子。调用ddply包含有序因子的数据帧会丢弃重组数据帧中的任何排序。

我为该记录级别排序编写了以下包装器ddply,然后将其重新应用于最初订购的任何列:

我还没有彻底检查过这个功能,所以可能会有它无法处理的情况。有没有更好/更完整的方法来处理这个问题?for我想,如果我稍微考虑一下,我可能会删除循环。

特别是,我在ddply调用后检查是否仍然存在任何原始有序因子似乎真的很难看,但我希望该函数能够处理ddply改变哪些列存在的情况,可能会删除有序因子.

想法?

0 投票
3 回答
218 浏览

r - 重塑铸件与一级相比

我经常有数据,我想将一个变量级别的值与所有其他变量级别的值进行比较。每次我编写代码来执行此操作时,我都希望它更容易。这是问题的一个例子:

假设我想将任何切工钻石的平均成本与最佳切工钻石的平均成本进行比较。为了公平起见,我想分别为每个清晰度做这件事。

让我们检查一下我们是否有足够的数据:

好的,Idea 中没有零,所以让我们计算平均值。

我想要的最终结果是:

但我不确定如何巧妙地做到这一点。这个问题的其余大部分都涉及计算中的一个中间步骤——除法。

现在我想计算所有削减与理想的相对价格。这是我希望在计算过程中看到的数据框 - 仅提取一个级别的切割:

哪个行得通,但是写上面的语句很繁琐,我仍然需要完成计算,再次提到理想名称。

感觉就像我想要类似的东西

这完全不适合平均计算,因为我需要知道计算中所有重铸级别的名称:

我想重铸,但有一种方法可以过滤提取的级别并保持其余部分不变,例如:

存在,但不保留未过滤的级别。

然后我需要再次融化它,虽然有重铸,但没有重熔。

有没有人有一个巧妙的技巧来做到这一点?

或者也许我正在以完全错误的方式看待这个 - 边际计算是否为我做这件事?


以下工作完全正确,但很繁琐:

0 投票
4 回答
8110 浏览

r - Windows 上并行 ddply() 的简单工作示例

我一直在寻找并行使用 ddply() 的简单工作示例。我已经安装了“foreach”包,但是当我调用 ddply(.parallel = TRUE) 时,我收到“未注册并行后端”的警告)

有人可以提供一个简单的并行使用 ddply 的工作示例吗?

0 投票
2 回答
3565 浏览

r - ddply 聚合列名

我正在使用 ddply 来聚合我的数据,但还没有找到一种优雅的方式来将列名分配给输出数据框。

目前我正在这样做:

还有这个

有没有更好、更优雅的方法来做到这一点?

0 投票
1 回答
1522 浏览

list - r 使用 do.call(rbind) 或 ddply 组合来自 tapply 的结果

我有日期/时间信息,我想在其中获取按年份分组的“季节”中日期的平均值、最小值、最大值和范围,而我稍微成功的唯一方法是使用 tapply。最接近的是 tapply 中的汇总函数。结果是我只假设是按年份列出的最小值、最大值、第一个 Qu、中值等。这些不完全是我需要的,但工作正常。

我从 1 个赛季的 tapply 函数获得的结果示例:

我想要做的是将我为不同季节生成的这些列表组合成一个大的快乐数据框,我可以将其导出到 csv 中。我已经搜索和搜索,并且变得更加困惑。大多数人建议最简单的是

但是,这给了我一条错误消息或一个空的“测试”框架。

我已经阅读了 plyr 包并假设 ddply 而不是 tapply 将结果强制转换为数据框应该可以工作,但我无法弄清楚如何让它工作,因为我无法让它完成我的功能将需要诸如平均值、最小值、最大值和范围...

我想要的最终结果是这样的:

那么我想做同样的事情,只在个人内部确定。我有一个 ID 字段,其中在某些年份测量了同一个人。我想在每个季节的年份中获得该人的平均开始日期。排除那些多年来没有被衡量的人。

由于我不了解如何操作列表和数组,甚至不了解 tapply 正在做什么,我不知道如何解决所有这些问题。我是否创建一个空数据框并将所有这些东西放入某个循环或其他东西中?以下是几年内 4 个“季节”的一些示例数据,请注意有些日期有日期和时间戳,有些只有日期。

这是我迄今为止编写的一些代码:

0 投票
5 回答
15266 浏览

r - 函数内的 ddply 找不到对象错误

这确实挑战了我调试 R 代码的能力。

我想ddply()将相同的函数应用于按顺序命名的不同列;例如。甲,乙,丙。为此,我打算将列名作为字符串重复传递,并使用eval(parse(text=ColName))允许函数引用它。我从另一个答案中抓住了这种技术。

这很好用,直到我放入ddply()另一个函数。这是示例代码:

有任何想法吗?NewColName 甚至在函数内部定义!

我认为这个问题的答案loops-to-create-new-variables-in-ddply可能对我有帮助,但我今天已经做了足够多的努力,是时候举手寻求帮助了。

0 投票
1 回答
9067 浏览

r - 将日期与 data.table 包一起使用

我最近发现了 data.table 包,现在想知道是否应该替换我的一些 plyr 代码。总而言之,我真的很喜欢 plyr,我基本上实现了我想要的一切。但是,我的代码运行了一段时间,加快速度的前景足以让我运行一些测试。这些测试很快就结束了,这就是原因。

我经常用 plyr 做的是按包含日期的列拆分我的数据并进行一些计算:

但是,在 data.table 中使用具有日期格式的列似乎不起作用:

如果我正确理解了这个包,我只有在使用 setkey() 时才能得到显着的加速。另外,我认为在日期和数字之间不断转换并不是一个好的编码。那么我是否遗漏了一些东西,或者没有简单的方法可以通过 data.table 实现这一点?

0 投票
2 回答
3841 浏览

r - 使用 plyr daply 将数据帧转换为矩阵

我正在尝试使用包daply中的功能,plyr但无法正确输出。尽管构成矩阵的变量是数字,但矩阵的元素是列表,而不是变量本身。例如,这里是数据的一小部分:

我希望能够以矩阵格式可视化数据,看起来像这样:

这是我使用的几种替代语法(后者是因为我的原始数据框的列比我在此处显示的要多):

然而,我得到的却是相当深奥:

正如一些评论者所建议的那样,我在输出中使用了该str函数,这是一个摘录:

我错过了什么?另外,有没有办法简单地使用基本包来做到这一点?谢谢!

Dput如果您想重现它,下面是数据框的:

0 投票
2 回答
197 浏览

r - daply 自定义输出对象值

我有一个键/值对列表,并希望将其转换为 2d 矩阵,其中单元格表示每个键/值组合的计数。这是一个示例数据框

目前,我正在使用 R 的plyr包和以下命令进行这种转换:

这是结果矩阵对象:

结果数组条目很好——它们给了我键/值计数;但我真正需要的是结果矩阵中的数值。它应该如下所示:

我可以通过迭代矩阵元素并执行必要的转换来做到这一点,但我很确定有一个更好的解决方案可以让我直接在daply函数中做到这一点。我只是还没有弄清楚如何并感谢这方面的帮助。

0 投票
1 回答
754 浏览

r - 大型data.frame中的有效字符串值计数

我有一个带有字符串值列的大型数据框(约 600K 行)(链接)

我想计算某个字符串值在帧中出现的次数。结果应如下所示:

在 R 中有没有一种有效的方法来做到这一点?由于帧大小,将帧转换为矩阵不起作用。目前我正在使用 plyr 包,但这太慢了。