【发布时间】:2016-09-10 21:58:21
【问题描述】:
我有一个 100 x 100 矩阵,其中有 1800 个缺失值,由 NaN 表示。我还有另一个 1800 x 1 矩阵,其中包含所有这些缺失值。我想将这些值从我的 1800 x 1 矩阵插入到第一个矩阵。
我试过了;
data_matrix[is.na(data_matrix)] <- predicted_values[1,]
但这不起作用。
也许最安全的选择是根据行/列名称进行操作?因为我的两个矩阵都有相应的行/列名称。这是我的意思的一个例子:
数据矩阵
VAL.T VAL.U VAL.V VAL.W
A 10.5 NaN 203 902
B 20.9 343 12 NaN
C 32 22 NaN 90
D 12 NaN NaN 23.1
predicted_values
VAL.U:A 65
VAL.W:B 21
VAL.V:C 23.9
VAL.U:D 11.1
VAL.V:D 78
predicted_values 中值的排列顺序可能也有帮助:即,predicted_values 中的值的排列方式就像我们从 data_matrix 中第一行的开头移动到 first_row 的末尾,然后移动到下一行.这就是 NaN 值应该被替换的方式。
【问题讨论】:
-
你有
predicted_values的data.frame吗?还是行名称为VAL.U:A等的矩阵? -
predicted_values是具有上述行名称 (VAL.U:A) 等的矩阵。data_matrix是具有行名称如 A、B 等和列名称为 VAL 的矩阵.U等。因此predicted_values的行名是data_matrix的列名和行名,用冒号隔开。 -
如果第二个矩阵中的值已经排序(如示例所示),那么
data_matrix[is.na(data_matrix)] <- predicted_values[,1]应该可以工作。注意[,1] -
它根本不起作用,它用重复的值填充 NA,即所有 NAN 都被替换为 predict_values 中的第一个值。
-
根据您的输入示例,它适用于我
标签: r matrix nan na missing-data