我有一个包含Col1 ID和Col2值的矩阵。
mat = [ ...
1000 3
1000 4
1000 nan
1000 nan
1000 5
2222 1
2222 2
2222 nan
3333 nan
4444 1 ] ;
我需要将nan
替换为其上方行中的值,但受条件限制:上面的行应具有相同的ID。
答案:
mat = [ ...
1000 3
1000 4
1000 4
1000 4
1000 5
2222 1
2222 2
2222 2
3333 nan
4444 1 ] ;
你能建议一种矢量化方法吗?
答案 0 :(得分:4)
此代码不会处理具有相同ID的连续NaN。
inds = find([mat(2:end,1)==mat(1:end-1,1)] & isnan(mat(2:end,2)))
mat(inds+1,2) = mat(inds,2)
在示例数据上运行两次完成任务。