将0替换为另一个数组中的数据

时间:2014-04-15 21:18:33

标签: arrays r analysis

我想用另一个数组中的数据替换0(缺少数据)。

两个数据都有2013〜1995年1月的冰盖数据,我想仅分析温度数据(第3列),4464温度数据。

部分数据如下所示:这是来自ErinJan [,, 1]

            [,1] [,2]  [,3]  [,4]  [,5] [,6]  [,7]  [,8]
    [1   ,]   21   10   0.0   0.0  0.0    0  0.0    0
    [2   ,]   21   11   0.0   0.0  0.0    0  0.0    0
    [3   ,]   21   12 -16.3 867.4  0.0    0  0.0    0
    [4   ,]   21   13 -16.4 867.5  6.9   81 63.2    0
    [5   ,]   21   14 -16.5 867.2  7.6   83 63.0    0
    [6   ,]   21   15 -16.5 867.1  7.9   84 63.0    0
    [7   ,]   21   16   0.0 867.1  8.0   86 62.0    0
    [8   ,]   21   17 -16.3 867.0  8.4   87 62.0    0
    [9   ,]   21   18   0.0 866.9  8.3   85 62.0    0

而HarryJan [,, 1]看起来像是:

            [,1] [,2]  [,3]  [,4]  [,5] [,6]  [,7]  [,8]
    [1   ,]   21   10 -12.4 877.6   2.5   52 444.0   9.1
    [2   ,]   21   11 -12.6 877.6   3.0   55 444.0   9.1
    [3   ,]   21   12 -12.9 877.5   3.8   52 444.0   9.1
    [4   ,]   21   13 -13.0 877.5   3.6   53 444.0   9.1
    [5   ,]   21   14 -12.9 877.3   3.3   51 444.0   9.1
    [6   ,]   21   15 -13.0 877.3   4.1   53 444.0   9.1
    [7   ,]   21   16 -13.2 877.1   3.6   53 444.0   9.1
    [8   ,]   21   17 -13.4 877.3   3.3   45 444.0   9.1
    [9   ,]   21   18 -13.4 877.3   3.6   48 444.0   9.1

两个数组都具有相同的格式和相同类型的数据,如上所述。我的目标是用HarryJan [,3,1]替换ErinJan [,3,1]缺失的数据,依此类推。例如,ErinJan [1,3,1]缺少数据,因此我需要替换为HarryJan [1,3,1]。 (0将替换为-12.4。)

如果我可以编写类似的代码:

   for (i in 1: 19){
        if ErinJan[,3,i] == 0 {
            replace value using HarryJan
        }
        else {
            do nothing
        }
     }

这可能吗?我不确定我应该使用什么命令。 Replace

我很感激你的帮助。

1 个答案:

答案 0 :(得分:2)

如果我理解你的问题,那么:

ErinJan[ErinJan == 0] <- HarryJan[ErinJan == 0]

将在整个矩阵中进行替换。我不确定您的列是如何排列的,但是如果您拉出所有列3,您应该能够为该变量执行相同的替换。

我相信这只适用于第3列:

ErinJan[,3,][ErinJan[,3,]==0] = HarryJan[,3,][ErinJan[,3,]==0]

这可以通过索引第一个数组中等于零的元素并使用相同的索引从第二个数组中提取值来实现。

如果你发现方括号中的东西令人困惑,这是另一种分两步打破它的方法:

JanInd = which(ErinJan[,3,]==0)
ErinJan[,3,][JanInd] = HarryJan[,3,][JanInd]