【发布时间】:2016-05-11 20:43:54
【问题描述】:
我有一个 n x 1 df_vector 向量如下:
Var1:M1 2.5
Var1:M2 3.8
Var1:M3 NaN
Var1:M4 9.3
Var2:M1 0.1
Var2:M2 2.3
Var2:M3 8.8
Var2:M4 NaN
然后我有一个 n x n df_matrix 矩阵:
Var1:M2 Var1:M3 Var1:M4 Var2:M1 Var2:M2 Var2:M3 Var2:M4
Var1:M1 46900 788888 700000 490603 479063 6468000 649111
Var1:M2 52823 543189 431863 134696 413000 4980000 550690
Var1:M3 34343 543199 543169 413000 479006 4689703 567000
Var1:M4 56655 745893 134000 130000 463090 9806300 790643
Var2:M1 87676 413596 156000 546970 310000 9730000 700000
Var2:M2 67786 124397 134680 546300 146900 1312600 669000
Var2:M3 45332 417933 203333 131588 137900 4690530 978000
Var2:M4 32422 660796 314796 786000 479000 7690000 796080
我想要做的是:如果 df_vector 中的一行具有 NaN 值,则使用其 row.name 并在 df_matrix 中搜索它并完全删除与该名称相同的任何行和/或列df_vector 中有 NaN 值的 row.name。但同时将那些已删除的列/行以相同的顺序保存到新的数据框中。因此,在这个特定示例中,在 df_vector Var1:M3 和 Var2:M4 中具有 NaN 值,因此应完全删除 df_matrix 中名称为 Var1:M3 和 Var2:M4 的行,以及名称为 Var1:M3 和Var2:M4 也应该被完全删除。并且这些删除的行和列应该以与 df_matrix 相同的格式创建一个新的数据框。
实现这一目标的最佳方法是什么?由于我的原始数据集是 10,000 x 10,000 矩阵,所以当我尝试编写 if 和 for 时,它非常慢并且需要很长时间才能编译。
【问题讨论】:
-
欢迎来到 SO。您能否添加您尝试过的代码,即使它很慢。问题的一般预期格式是,除了描述期望的结果之外,您还展示了您尝试过的内容。
标签: r