问题标签 [tapply]

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

r - 将基于行的函数应用于子集

我是该tapply函数的新手,没有成功计算每个询问子集中的时差计算。

我有一个输入数据框,其中包含DATE一些 RN 的观察日期(列)。在我的脚本中,我将这个数据帧子集在另一个(我们称之为DF)中,将数据限制为只有一个 RN。

我正在尝试自动计算日期与前一个日期之间的差异。我可以DF使用以下代码做到这一点:

我需要基于 3 个变量(、、、)在每个子集中运行它VAR1VAR2所以VAR3我尝试了所谓的tapply.

我试过:(DATE是我的第三列)

我可能会在这里错过一个重要的点,因为它返回给我一个填充了 TONS 的数组NULL。最糟糕的是,它会返回NULL所有网站的数据,而不是存在于DF.

该函数如何调用甚至不在输入中的因素级别?有没有办法跳过所有这些NULL数据,或者至少将它限制在我的子集的边界。

我在 SO 和其他帮助网站上进行了搜索,但没有找到有效的答案。

第二个问题:我想将输出(时差)写在一个新列中。由于tapply结果是一个数组,我该怎么做?我必须把这个命令放在哪里?在function(x){}部分还是在apply命令之外?

编辑:这是 DF 的一部分,我也编辑了命令 EDIT2:在执行 dput 时,我看到我的所有因素水平仍然存在。我用 factor() 删除了它们,但现在 tapply() 不再起作用了。

编辑 3:@sgibb:我尝试了您的命令,但现在又出现了另一个错误:“as.Date.numeric(value) 中的错误:必须提供'origin'”。所以我尝试提供如下所示的来源,但仍然出现错误

0 投票
1 回答
120 浏览

r - 如何从数据框中的汇总统计信息中生成布尔变量?

我想创建一个布尔列,说明每个样本是否为最大值。我制作了这个功能并将其用于tapply

但是有没有更好、更有效的方法来做到这一点?

{PS 实际上是我使用的真实数据sapply,例如is.maxes<-sapply(s, function(x) is.max(x[,"Sum"]),simplify=F)}

0 投票
1 回答
365 浏览

r - 某些因素的 tapply 和 error 汇总统计

在与 tapply 一起使用时,我试图找到对汇总结果的解释。在以下示例中,因子“Reg2”的汇总统计信息是错误的。有人可以帮助我们理解这种行为吗?

0 投票
1 回答
1060 浏览

r - 将函数应用于组中的组(ddply中的tapply)

我的数据集如下所示:

我希望每年和每个物种组(因此不包括月份和物种的水平)的平均重量和包括的物种数量。这适用于 ddply。但是,我也想包括我的数据“质量”的价值。也就是说,如果每个月的物种数量是平衡的,或者例如在夏季月份包含的物种更多。因此,我想我可以简单地计算每月独特物种数量的年度标准偏差。我尝试在 ddply 中使用 tapply 执行此操作,如下所示:

但这给了我一个错误

我想获得的是这样的:

我不能首先按月、年和物种组使用 ddply,因为这意味着我不再知道每年独特物种的数量。我想我也可以分别计算 n_species 和 quality 并在之后将它们放在一起,但这将是一种麻烦的方法。

我怎样才能使我的功能工作,或者我怎样才能更正确地做到这一点?

回答:

最简单的解决方案来自 shadow,他注意到我在使用 tapply 时的错误。此外,标准误差应该比标准偏差更合适,给出以下公式:

0 投票
1 回答
751 浏览

r - 从我的 R 数据中删除烦人的“NA”条目(rm.na=TRUE 不起作用!)

我有一些我正在尝试分析的数据。我有两个变量 - 一个是是或否类型的问题,另一个有许多可能的答案(但分类 - 比如“完全没有,有点,中性,很多,100%”)。

我想用tapply来计算比例。我不知道该怎么做。我知道如何计算平均值,如下所示:

无论如何,我不知道如何获得比例而不是像这样的平均值,但除此之外,当我尝试获得平均值时,我得到: 0 1 NA NA 因为我的数据中显然有 NA 答案。我尝试添加“rm.na=TRUE”值,但这并没有解决它。那么如何摆脱这些 NA 呢?还是有其他方法可以计算这样的比例?(计算:对问题变量 1 回答是的人对问题变量 2 也回答了 3 的比例是多少?)

0 投票
1 回答
868 浏览

r - 函数tapply和ave有什么区别?

我无法将注意力集中在该ave功能上。我阅读了帮助并搜索了网络,但我仍然无法理解它的作用。我知道它在观察的一个子集上应用了一些功能,但与例如不同的方式tapply

有人可以用一个小例子来启发我吗?

谢谢,请原谅我提出了一个不寻常的要求。

0 投票
2 回答
571 浏览

r - 使用 tapply 或 by 与函数的非默认设置

我一直在搜索 Stackoverflow 几个小时,希望能找到一些我猜想是不言而喻的东西,但似乎没有人问过(这可能意味着它确实是不言而喻的)。

我想使用tapplyorby来查找特定事件第一次出现在数据框中(第一个非零值)。我以前这样做的方式是通过

但不知何故,这在与 tapply 或 by 结合使用时不起作用。这是一些示例数据

所以这是我尝试过但没有奏效的方法

  1. tapply(m[,4],m[,3],max.col)# 这为每个 EVENT 提供 1,结果向量的长度等于数据集中提到的 EVENT 的数量
  2. tapply(m[,4],m[,3],max.col(m, ties.method=c("first")))# match.fun(FUN) 中的错误:'max.col(m, ties.method = c("first"))' 不是函数、字符或符号另外:警告消息:在 max.col(m, ties.method = c("first")) :强制引入的 NA

2号确实是问题的症结所在。由于我不清楚的原因,一旦您将默认的平局打破方法(即“随机”)更改为我需要的方法(即“第一”),max.col 就不会被识别为函数。

此外,我希望能够找到发生非零的年份。我认为一个明智的选择是将 MOMENT 列与 OCCURENCE 列相乘(称为该 ID)并在 ID 中查找第一个非零值(对于每个因子事件)保持该 ID 值并将其他值变为零

我尝试使用包含whenandif语句和 using的函数对此进行编码,break但它不起作用

这里的想法是在 m$ID == 0 时在 EVENT 上迭代函数,然后更改值并在 m$ID > 0 时中断。没用...

关于如何解决这个问题(或更简单的解决方案)的任何想法?

0 投票
1 回答
119 浏览

r - 计算 R 中范围内的出现次数

我的数据集看起来像这样

我想创建一个看起来像这样的结果集

欢迎任何帮助。

0 投票
1 回答
417 浏览

r - 在 R 中的数据框中合并和追加行

我已经阅读了许多主题,并且认为我的问题以前没有被问过。我data.frame在 R 中有一个与向客户展示的广告相关的内容:.. 我有很多客户,8 种不同的产品.. 所以这只是一个示例

我想把它改造成这样......

我怎样才能做到这一点?每个客户都有一些静态变量,例如年龄、状态和其他一些……然后是与呈现给给定客户的每个报价相关的详细信息、报价中的产品#、成本、时间,如果他们购买了它......我想把所有这些放在一条线上,让每个客户进行分析。

值得注意的是,产品的数量最多为 7 个,但对于某些客户来说,它的范围是 1 到 7 个。

我没有要真正展示的示例代码。我曾尝试使用该aggregate函数,但我不想聚合或做任何 SUM。我只是想做一些连接。研究表明cbind, 和tapply函数可能有用。

谢谢您的帮助。我对 R 很陌生。

0 投票
1 回答
1781 浏览

r - 为什么tapply中的参数FUN结合colwise无效

我通常使用 和 的组合colwisetapply计算数据框中的分组值。但是,我意外地发现FUNin的参数tapply无法与colwisefrom一起正常工作plyr。示例如下:

数据:

df <- data.frame(a = 1:10, b = rep(1:2, each = 5), c = 2:11)

普通的:

以上代码正确,可以正常工作。但是如果我添加FUN,那就错了:

错误是:

谁能解释原因?先感谢您。