我在这里问了同样的问题,但它已关闭,因为我的帖子与类似问题相关,尽管它们与我的问题无关,也无法解决。
数据集:
我有一个巨大的数据集保存在一个矩阵中,其中行数超过一百万,有十几列。
矩阵看起来像
data <- matrix(c(1, NA, 2, NA, 1, NA, NA, NA, 1, NA, 3, NA, 5, NA, NA, NA, 8, NA, 5, NA, 7, NA, NA, NA), ncol=3)
> data
[,1] [,2] [,3]
[1,] 1 1 8
[2,] NA NA NA
[3,] 2 3 5
[4,] NA NA NA
[5,] 1 5 7
[6,] NA NA NA
[7,] NA NA NA
[8,] NA NA NA
因此,如果某列中存在缺失值,则其他列必然会有同一行的缺失值。
问题:
如果矩阵中所有列的每列中有 3 个或更多,我想删除“有效”的连续缺失值。所以我想在一列而不是一行中删除连续的 na 。
对于我的问题,我已经看到了像这样的解决方案,但是对于我的庞大数据集来说它们太慢了。您还有其他可以有效实现目标的建议吗?此外,如果缺失值在行而不是列中是连续的,则我的已关闭问题的建议答案(1和2 )将被删除。
编辑:
根据下面的评论,输出必须是这样的:
[,1] [,2] [,3]
[1,] 1 1 8
[2,] NA NA NA
[3,] 2 3 5
[4,] NA NA NA
[5,] 1 5 7
编辑:
> data
[,1] [,2] [,3] [,4]
[1,] 1 1 8 NA
[2,] NA NA NA NA
[3,] 2 3 5 NA
[4,] NA NA NA NA
[5,] 1 5 7 NA
[6,] NA NA NA NA
[7,] NA NA NA NA
[8,] NA NA NA NA
预期输出
[,1] [,2] [,3]
[1,] 1 1 8
[2,] NA NA NA
[3,] 2 3 5
[4,] NA NA NA
[5,] 1 5 7