【发布时间】:2020-08-11 00:43:03
【问题描述】:
我试图找出上面一行和下面一行的日期的平均值。但是, lag(Date) 和 lead(Date) 正在生成向量,mean() 然后拒绝使用返回的 NA 来代替(弄清楚这让我费了太长时间)。
df <- data_frame(Date = as.Date(c("2020-01-01", NA, "2020-12-12")))
df <- mutate(df, Date = replace_na(Date, mean(c(lag(Date),lead(Date)))))
这给出了 ("2020-01-01", NA, "2020-12-12") 而我想要的是 ("2020-01-01, "2020-06-06", "2020-12- 12")
那么如何访问 Date 的上一行和下一行值,以便生成平均值?
【问题讨论】:
-
我建议你使用滑动功能,查看 tsibble 包
-
试试
mean(......na.rm=TRUE) -
所以 na.rm=TRUE 有效(对于我的最小示例,但不是我真正的问题),但我不明白为什么。大概滞后和领先仍然会产生向量,或者我只是完全误解了正在发生的事情。
标签: r dataframe tidyverse dplyr