This question already has answers here:
propagating data within a vector

(5个答案)


已关闭6年。




我有一个数据框,其中的列如下:
[1] i5olv
[2]
[3] udp3o
[4]
[5]
[6]
[7] uem5i
[8] b0047
[9]
[10]

请注意,元素没有特定的顺序,非空元素之间可能有可变数量的空行。我希望该列看起来像这样:
[1] i5olv
[2] i5olv
[3] udp3o
[4] udp3o
[5] udp3o
[6] udp3o
[7] uem5i
[8] b0047
[9] b0047
[10] b0047

如何以矢量化方式执行此操作?我可以使用for循环来缓存最后一个非空值,但这很慢。

最佳答案

使用data.table的选项

library(data.table)
setDT(df1)[, Col1:=Col1[1L] ,cumsum(Col1!='')]

 #    Col1
 #1: i5olv
 #2: i5olv
 #3: udp3o
 #4: udp3o
 #5: udp3o
 #6: udp3o
 #7: uem5i
 #8: b0047
 #9: b0047
 #10: b0047

数据
 df1 <- structure(list(Col1 = c("i5olv", "", "udp3o", "", "", "",
 "uem5i",
 "b0047", "", "")), .Names = "Col1", row.names = c(NA, -10L),
  class = "data.frame")

关于r - 用上一个非空行的副本填充空行,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30056885/

10-09 06:44
查看更多