我有一个问题,一个向量在开始时有一堆NAs,然后是数据.然而,我的数据的特点是,非NA的前n个值可能不可靠,所以我想删除它们并用NA替换它们.

例如,如果我有一个长度为20的向量,非NAs从索引位置4开始:

> z
 [1]          NA          NA          NA -1.64801942 -0.57209233  0.65137286  0.13324344 -2.28339326
 [9]  1.29968050  0.10420776  0.54140323  0.64418164 -1.00949072 -1.16504423  1.33588892  1.63253646
[17]  2.41181291  0.38499825 -0.04869589  0.04798073

我想删除前3个非NA值,我认为这是不可靠的,以便给出:

> z
 [1]          NA          NA          NA          NA          NA          NA  0.13324344 -2.28339326
 [9]  1.29968050  0.10420776  0.54140323  0.64418164 -1.00949072 -1.16504423  1.33588892  1.63253646
[17]  2.41181291  0.38499825 -0.04869589  0.04798073

当然,我需要一个通用的解决方案,我永远不知道第一个非NA值何时开始.我该怎么做呢?IE如何找出第一个非NA值的索引位置?

为了完整起见,我的数据实际上是在一个数据框中排列的,其中有很多向量列,每个向量可以有不同的非NA起始位置.此外,一旦数据开始,可能会有零星的NAs进一步下降,这使我无法简单地计算它们的数量,作为一种解决方案.

推荐答案

使用is.nawhich的组合来查找非NA索引位置.

NonNAindex <- which(!is.na(z))
firstNonNA <- min(NonNAindex)

# set the next 3 observations to NA
is.na(z) <- seq(firstNonNA, length.out=3)

R相关问答推荐

将模拟变量乘以多个观测结果中的模拟变量

如果索引重复,聚合xts核心数据

如何使用stat_extract_all正确提取我的目标值?

如何计算R数据集中每个女性的子元素数量?

有没有一个R函数允许你从一个数字变量中提取一个数字,而不考虑它的位置(不仅仅是第一个或最后一个数字?

删除列表中存储的数据帧内和数据帧之间的重复行

如何将旋转后的NetCDF转换回正常的纬度/经度网格,并使用R?

在连续尺度上转置标签[瀑布图,R]

如果某些列全部为NA,则更改列

从多面条形图中删除可变部分

如何提取R中其他字符串和数字之间的字符串?

快速合并R内的值

我需要使用ggplot2制作堆叠条形图

是否从列中删除★符号?

如何使投篮在R中保持一致

策略表单连接两个非常大的箭头数据集,而不会 destruct 内存使用

如何创建直方图与对齐的每月箱?

根据用户输入更改标记大小和 colored颜色 (R)

如何准确地指出Read_delim所面临的问题?

带查找数据的FCT_REORDER.帧