【发布时间】:2021-11-25 21:09:45
【问题描述】:
这是我的数据的样子:
dput(head(dataf,40))
structure(list(Time = c(20000224, 20000225, 20000226, 20000227,
20000228, 20000229, 20000301, 20000302, 20000303, 20000304, 20000305,
20000306, 20000307, 20000308, 20000309, 20000310, 20000311, 20000312,
20000313, 20000314, 20000315, 20000316, 20000317, 20000318, 20000319,
20000320, 20000321, 20000322, 20000323, 20000324, 20000325, 20000326,
20000327, 20000328, 20000329, 20000330, 20000331, 20000401, 20000402,
20000403), NDVI = c(NaN, NaN, NaN, NaN, NaN, NaN, NaN, NaN, NaN,
NaN, NaN, NaN, NaN, 0.562256741, 0.560792828, 0.559272321, 0.554727235,
NaN, NaN, NaN, NaN, NaN, NaN, NaN, 0.506596306, 0.504768168,
0.536223787, 0.5476394, 0.520311992, 0.52862363, NaN, NaN, NaN,
NaN, NaN, NaN, NaN, NaN, NaN, NaN)), row.names = c(NA, -40L), class = c("tbl_df",
"tbl", "data.frame"))
我想知道数据框的一列 (NDVI) 中两个数值之间的 NaN 的平均值。
请看下面的例子:
| Date | NDVI |
|---|---|
| 20000224 | NaN |
| 20000225 | NaN |
| 20000226 | NaN |
| 20000227 | NaN |
| 20000228 | NaN |
| 20000229 | NaN |
| 20000301 | NaN |
| 20000302 | NaN |
| 20000303 | NaN |
| 20000304 | NaN |
| 20000305 | NaN |
| 20000306 | NaN |
| 20000307 | NaN |
| 20000308 | 0.562256741 |
| 20000309 | 0.560792828 |
| 20000310 | 0.559272321 |
| 20000311 | 0.554727235 |
| 20000312 | NaN |
| 20000313 | NaN |
| 20000314 | NaN |
| 20000315 | NaN |
| 20000316 | NaN |
| 20000317 | NaN |
| 20000318 | NaN |
| 20000319 | 0.506596306 |
| 20000320 | 0.504768168 |
| 20000321 | 0.536223787 |
| 20000322 | 0.5476394 |
| 20000323 | 0.520311992 |
| 20000323 | 0.52862363 |
平均值为:
包括最初的 NaN:10 NaN
不包括第一个 NaN:7 NaN
注意,我特意放置了这个数据框,因为它以NaN 开头。我假装的解决方案是在开头包含NaN,因此它将考虑值之间的NaN 的平均值和另一个仅在NaN 之前的第一个数值之后开始计算NaN 的解决方案.
任何帮助将不胜感激。
【问题讨论】:
-
是的,一个数字(连续 NaN 运行的平均值)。
-
抱歉,我想说的是,在您的示例数据中,有第三个 10 个连续 NaN 序列,因此平均值为 10 (13 + 7 + 10)/3 或 8.5 (7 + 10) /2... 还是我弄错了?希望下面我的回答对你有帮助
-
我用我的示例数据做了一个小例子,只是为了展示我假装的两个选项。首先,我希望有一个包含第一个 NaN 的平均值和另一个不包含它们的平均值。是的,你的计算是正确的。