使用if语句在矩阵中求和值

时间:2016-02-03 12:52:00

标签: r

我有生成器的每小时值(1)或全年不起作用(0)。如果我知道一小时的发电量是40GW,我现在需要计算发电量。所以总结发电机开启时的所有时间,并减去时间的小时数并将结果乘以40.我只是不知道R中是否有任何功能可以快速完成。

ccmix
  [,1] [,2]
[1,] 1272.819    1
[2,] 1289.226    0
[3,] 5308.784    1
[4,] 5338.036    0
[5,] 5797.671    1
[6,] 5859.749    0
[7,] 8760.000    1

1 个答案:

答案 0 :(得分:1)

第二列是二进制。因此,一种方法是将其更改为逻辑向量,将对应于“ON”和“OFF”(即1和0)的值进行子集化,得到两者的sum的差值并乘以40。 / p>

 40*(sum(ccmix[,1][!!ccmix[,2]]) - sum(ccmix[,1][!ccmix[,2]]))

否定函数(!)将0转换为TRUE,将1转换为FALSE。如果我们执行双重否定(!!),则1变为TRUE,0变为FALSE。我们可以用as.logical换行,将1转换为TRUE,0转换为FALSE,而不是否定。