按R中的最后一个非空值完成空白

时间:2018-03-28 19:54:19

标签: r

我正努力在R中解决这个看似简单的问题,但直到现在还没有成功。 我有一个带有char变量的data.frame,它有一些空白和一些非空值。我试图用自上而下的相同变量找到最后一个非空白的空白,如下面的例子所示,在data.frame中'变量'变种''想要'vs'有'。

如果有人可以提供帮助,我提前感谢!

set.seed(12346)
foi <- split(iris, iris$Species)
want <- do.call("rbind", lapply(foi, function(x){
  x[1:sample(1:10, 1), ]
}))
row.names(want) <- NULL
want$Species <- as.character(want$Species)

have <- want
have$Species[2:10] <- ""
have$Species[12:16] <- ""
have$Species[18:21] <- ""

head(have, 20)
head(want, 20)

1 个答案:

答案 0 :(得分:0)

一个简单的for循环,假设第一个值没有丢失:

for(i in which(have$Species=="")) have$Species[i]=have$Species[i-1]

您可以按连续空白值块拆分变量,如果速度有问题并且文件很大,则可以使用前一个非空白值填充每个块。