计算导数diff()并保持长度 - 添加NA

Jon*_*ein 5 r

如何可以计算一列的数字衍生物中的数据帧(用Diff())并通过加入NA值保持长度?

Ric*_*rta 13

目前还不清楚你想要NA的确切位置,但你可以将它们连接起来.

 dif <- c(NA, diff(dfrm$id, lag=1)) 
Run Code Online (Sandbox Code Playgroud)


ece*_*ulm 7

从这个答案到我的问题.

如果您正在寻找一种通用的前置方式 NA

pad  <- function(x, n) {
    len.diff <- n - length(x)
    c(rep(NA, len.diff), x) 
} 

x <- 1:10
dif <- pad(diff(x, lag=1), length(x)) 
Run Code Online (Sandbox Code Playgroud)

但如果你不害怕带zoo图书馆,最好这样做:

library(zoo)
x <- 1:5
as.vector(diff(zoo(x), na.pad=TRUE)) # convert x to zoo first, then diff (that invokes zoo's diff which takes a na.pad=TRUE)
# NA 1 1 1 1 (same length as original x vector)
Run Code Online (Sandbox Code Playgroud)