R 使用指定的条件计算两列之间的比率

R 使用指定的条件计算两列之间的比率,r,dataframe,R,Dataframe,我这里有一个非常简单的问题。我想计算数据帧中两列之间的比率。我想计算列“COLD”大于零时的比率。比率为“科尔/冷/3600”。我想使用的另一个条件是找到“COLD”的最后一个非零值,并将该比率指定为零 玩具数据如下: new <- structure(list(DIST = c(290.5, 291.5, 292.5, 293.5, 294.5, 295.5, 296.5, 297.5, 298.5, 299.5, 300.5, 301.5, 302.5, 303.5, 304.5,

我这里有一个非常简单的问题。我想计算数据帧中两列之间的比率。我想计算列“COLD”大于零时的比率。比率为“科尔/冷/3600”。我想使用的另一个条件是找到“COLD”的最后一个非零值,并将该比率指定为零

玩具数据如下:

new <- structure(list(DIST = c(290.5, 291.5, 292.5, 293.5, 294.5, 295.5, 
296.5, 297.5, 298.5, 299.5, 300.5, 301.5, 302.5, 303.5, 304.5, 
305.5, 306.5, 307.5, 308.5, 309.5), COLE = c(8.99599581870558e-34, 
4.7205846523432e-34, 2.46933986060826e-34, 1.28710593231168e-34, 
6.68129579857346e-35, 3.4504303472814e-35, 1.77184019853307e-35, 
9.05642991756649e-36, 4.6013156549926e-36, 2.31604511599026e-36, 
1.14687288574039e-36, 5.5010466649376e-37, 2.45427157311345e-37, 
8.97771568697138e-38, 2.3363639100918e-38, 0, 0, 0, 0, 0), COLD = c(6.1904901729067e-36, 
3.2185001604668e-36, 1.65347497008439e-36, 8.31494814855863e-37, 
4.01276411184216e-37, 1.77017459051552e-37, 5.41351248244182e-38, 
1.12878823222726e-38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)), .Names = c("DIST", 
"COLE", "COLD"), class = "data.frame", row.names = 291:310)
new$COLF <- ifelse(test=(new$COLD>0),(new$COLE/new$COLD/3600),0)
新建使用


查找最后一个非零的索引
COLD
。请注意,我在这里使用了特定的精度-选择一个适合您的数据,并在其他比较中使用它,例如
new$COLD>-1e-100
。比较双精度应该总是涉及某种精度。

我已经读了好几遍,但我仍然没有得到您想要的,您的
ifelse
构造还没有完成。
ifelse
只检查大于零的“冷”值。它不检查“COLD”的最后一个非零值。我需要为“COLD”的最后一个非零值或仅
sum(new$COLD>0)
将比率指定为零?或者
sum(!new$COLD==0)
取决于OP想要大于零(第一段)还是非零(最后一段!)值@SimonO101-如果在测试边缘情况的最终1+1之前有0,则该测试将失败,但鉴于@eddi和SimonO101发布的数据,这似乎不是一个问题。感谢您的回复,这里的小对话也有助于理解建议方法的局限性。我觉得这更直观一些:
tail(其中(abs(新$COLD)>1e-100),1)
which.max(cumsum(abs(new$COLD) > 1e-100))