【发布时间】:2021-05-08 12:31:03
【问题描述】:
我问了同样的问题here,但它已关闭,因为我的帖子与类似问题相关联尽管它们与我的问题无关,也没有解决它。
数据集:
我有一个庞大的数据集保存在一个矩阵中,其中行数超过一百万,有十几列。
矩阵看起来像
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。
对于我的问题,我已经看到了解决方案,例如 this one,但它们对于我庞大的数据集来说太慢了。您还有其他可以有效实现目标的建议吗?此外,如果缺失值在行而不是列中是连续的,则我的已关闭问题的建议答案(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
【问题讨论】:
标签: r dataframe matrix data.table na