问题标签 [na]

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 投票
6 回答
9597 浏览

r - 用最接近的值替换 R 中的 NA

我正在寻找类似于包na.locf()中的东西zoo,但不是总是使用以前的非NA值,而是我想使用最接近的NA值。一些示例数据:

替换NAna.locf(3 结转):

na.locf设置fromLastTRUE(5 向后进行):

但我希望使用最接近的NA值。在我的示例中,这意味着 3 应该向前结转到第一个NA,而 5 应该倒退到第二个NA

我编写了一个解决方案,但想确保我没有重新发明轮子。有什么东西已经漂浮了吗?

仅供参考,我当前的代码如下。也许如果不出意外,有人可以建议如何提高效率。我觉得我缺少一种明显的改进方法:

要回答以下 smci 的问题:

  1. 不,任何条目都可以是 NA
  2. 如果都是 NA,请保持原样
  3. 不,我当前的解决方案默认为左手最近的值,但这没关系
  4. 这些行通常是几十万个元素,所以理论上上限是几十万。实际上,这里和那里不会超过几个,通常是一个。

更新所以事实证明,我们完全朝着不同的方向前进,但这仍然是一个有趣的讨论。谢谢大家!

0 投票
1 回答
949 浏览

r - zoo包出错,数据太长?

我想生成一个具有指定 bin 宽度的运行平均值的新列,为此我使用了 zoo 包(rollmean 函数)。我的数据表由 100 万行组成,该函数适用于前 500,000 行,之后是所有的 NA,有什么想法我可能做错了吗?

我会很感激你能给我的任何帮助,我已经坚持了太久了。提前致谢。

0 投票
1 回答
2502 浏览

r - 来自 RandomForest 的 R 意外 NA 输出

我正在使用一个有很多 NA 的数据集。我知道前 6 列没有任何 NA。由于第一列是 ID 列,因此我将其省略。

我运行以下代码以仅选择在响应列中具有值的行:

然后,我使用以下代码将 sub1 用作 randomForest 中的数据集:

然后我运行这段代码来检查 NA 的输出:

如果输入的数据是干净的,我无法弄清楚为什么我会得到 NA。

有什么建议么?

0 投票
2 回答
16352 浏览

r - 在使用 R 进行 PCA 分析之前省略 NA 和数据插补

我正在尝试使用princompR 中的函数进行 PCA 分析。

以下是示例代码:

我试图NA从数据集中删除 ,但它不起作用。

即使我可以删除NA's,它也可能无济于事,因为每一行或每一列都至少有一个缺失值。是否有任何 R 方法可以估算数据进行 PCA 分析?


更新:根据答案:

这有效,但默认值na.action不起作用。

是否有任何方法可以估算数据,因为在实际数据中,我几乎每列都缺少值?这种NA遗漏的结果会给我〜0行或列。

0 投票
3 回答
2190 浏览

r - 是否可以不在数据框中显示 NA?

我正在尝试创建一个 data.frame,其中某些单元格缺少值。我想知道是否有任何方法可以隐藏 NA,而不是显示 NA?我想要的基本上就像一个方差分析表,如下所示。

输出如上。如果您尝试访问这些空白单元格,您将获得 NA

提前致谢!!

0 投票
2 回答
642 浏览

r - 根据行中的 NA 在数据框中选择列

假设我有一个 7 列的数据框,其中一些行有 7 个值,而另一些行的 NA 超过了某个点。我想获取不是 NA 的最后一个值(从左到右),然后直接获取左侧的值。它是分层数据,但有些组比其他组更深入。我想要新数据框中两列中最深和第二深的组。

这段代码有效,但会最大限度地利用我对 46K 观察数据帧的记忆。有没有我没有想到的更有效的方法?

第一次发帖。通常我可以从这个站点拼凑出我需要的东西。提前致谢。

0 投票
1 回答
191 浏览

r - 根据数据框中其他列的测试将 NA 设置为列

我有一个包含 48 列的大型数据框,我想在数据框的每一行上运行一个函数,从而将通过函数给出的测试的列设置为 NA。该测试涉及从另一个数据帧中获取一个数字。adply 很适合这个,但是我很难让它给我想要的结果。

让我解释一下:

这是我要操作的数据框的示例:

这是从中派生测试的小数据框:

整个想法是将NA分配给比大数据框中列出的实际深度更深的Cells数据点(即在第3行,深度为0.3但有两个数据点对应于Cell2,位于0.4 m 深度,因此这些都是错误的。我想 NA 这些)。

我想编写一个函数,它一次接收一行,并且:1)获取仪器深度 2)获取列名列表 3)获取比仪器深度更深的单元格索引 4)获取名称这些单元格(即 Cell1、Cell2、Cell4 等)5)使用正则表达式在列名列表中查找具有相应单元格的列(即 Cell1_avgdir、Cell1_avgvel 等)6)使用这些索引,设置那些列值到 NA。

这是我到目前为止所拥有的:

不幸的是,这并没有像我想象的那样做,我现在正试图找出原因。

它给了我这个:

当我想要的是:

希望我已经充分解释了我的问题。感谢任何可以:1)修复我已经开始的东西,或者 2)告诉我一个更好的方法来做到这一点,我不知道。

-SH

0 投票
1 回答
101 浏览

r - 返回相同的 DF 或向量而不是 NULL

用户,

我的结果中有 NULL 的 data.frames,但我不希望它们为 NULL。我希望它们与开始时相同(不变)。我正在处理一个文件列表,我的代码的目的是用我的其他 data.frames 中的数据填充所有 NA (根据最佳相关系数)。这是一个小例子:

想象一下这是我的 3 个输入数据帧(每个 10 行):

这里的目的是,例如,如果 ST1 中有 NA,则 ST1 必须填充来自与 ST1 最佳相关文件的数据(在本例中介于 ST2 和 ST3 之间)。

由于 ST3 这里没有数据,所以我不能有任何相关系数。所以 ST3 中的 NA 无法填充,ST3 也不能用于填充另一个文件。因此,如果您愿意,ST3 没有用。尽管如此,我想在我的所有代码中保持 ST3 不变。所以我的代码中的问题来自没有数据的data.frames,所以只有NA。

目前我的代码会给出这个“refill”(我的代码结束)(在我的data.frames中填充NA):

但实际上,我想要“补充”这个结果:

因此,对于只有 NA 的 data.frame,我不希望它们在“refill”中为 NULL,但我希望它们与输入中的相同。我需要它在输入和输出之间具有相同尺寸的 data.frames。如果它们为 NULL(目前是这样,但我不明白为什么,我想更改它),则此 data.frame 中将有 0 行,而不是像其他 data.frames 那样有 10 行。

所以我认为函数“process.all”或“na.fill”或“lst”中的代码有问题。

这是我的代码,它是一个可重现的示例,您可以理解我的错误(您将在head(refill)ST2 中看到设置为 NULL)。对不起,如果它有点长,但我的错误取决于以前使用的其他功能。希望您了解我的问题以及我正在尝试做的事情。谢谢你的帮助!

(有关信息,在函数“process.all”和“na.fill”中:x 是我要填充的 data.frame,y 是将用于填充 x 的文件(因此与 x 的最佳相关文件) )。

杰弗里

0 投票
3 回答
4619 浏览

r - R中线性模型的系数和摘要的不同NA动作

在 R 中,当使用 时lm(),如果我na.action = na.pass在对 的调用中设置lm(),那么在汇总表中,对于任何无法估计的系数都有一个 NA(因为在这种情况下缺少单元格)。

但是,如果我使用summary(myModel)$coefficients或仅从汇总对象中提取系数coef(summary(myModel)),则省略 NA。

我希望在提取系数时包含 NA,就像在打印摘要时包含它们一样。有没有办法做到这一点?

设置options(na.action = na.pass)似乎没有帮助。

这是一个例子:

0 投票
2 回答
216 浏览

r - R 因子值变化

我正在尝试在 R 中进行一些数据操作。我有 2 个数据框,一个是训练数据,另一个是测试数据,所有数据都是分类数据并存储为因子变量。

数据中有一些 NA,我正在尝试将它们转换为“-1”。当我为训练数据做这件事时,一切都很好,但对测试数据却不是。

在我运行的循环中有些东西会改变值,但我不知道是什么。

这是之前的:

这是循环:

后面是这样的:

我已经看到使用字符-> 数字转换时上移了一个,但我无法弄清楚为什么会发生这种情况,尤其是对于其中一个数据帧/循环。

有什么建议么?