从缺失的值创建新的数据框

时间:2016-10-15 14:15:13

标签: r

考虑一个向量x:

x <- c(0, 5, 10, 25, 30)

我想创建一个带有“缺失值”的新向量,这意味着如果我的序列间隔为5,则“跳过”所有值。

因此,对于此示例,输出应为:

xna <- c(15, 20)

此外,我必须创建一个函数,以便我可以对任何向量x执行此操作。

nats <- function(x){
  lastvalue <- x[length(x)]
  firstvalue <-x[1]
  xseq <- seq(firstvalue, lastvalue, 5)
  for i in xseq {
     # if x is not in x seq put it into a vecotr xna # 
   }
xna
}

我真的不知道该怎么做。非常感谢建议,或者是否已有可以执行此操作的功能。

请帮忙,

3 个答案:

答案 0 :(得分:3)

如果你需要作为一个功能,

nats  <- function(x, interval){
   lastvalue <- x[length(x)]
   firstvalue <-x[1]
   xseq <- seq(firstvalue, lastvalue, interval)
   xna <- xseq[!xseq %in% x]
   return(xna)
}

x <- c(0,5,10, 15,25,30)
nats(x, 5)
#[1] 20
x <- c(3, 6,18)
nats(x, 3)
#[1]  9 12 15

答案 1 :(得分:1)

基础R中的解决方案(参见?setdiff

# Your data
x <- c(0, 5, 10, 25, 30)

# Your sequence
y <- seq(0, max(x), by = 5);

# "Skipped" values
s <- setdiff(y, x);
print(s);
[1] 15 20

答案 2 :(得分:0)

使用%in%运算符。见https://stat.ethz.ch/R-manual/R-devel/library/base/html/match.html

xna <- xseq[!xseq%in%x]