首次出现后,在组覆盖/替换其他字符串/ NA之后携带字符串

时间:2018-05-03 11:52:02

标签: r zoo

我有一个这样的数据框:

 data.frame(
   id = rep(1:5, each = 4), 
   status = c(
   NA, "a", "c", "a", 
   "a", "a", "c", "c",
   NA, NA, "c", "c",
   "c", NA, "a", "c",
   "a", NA, "c", NA),
   stringsAsFactors = FALSE)

我的主要目标是在一个组(相同的id)中向前传送字符串“c”。一旦id中出现“c”,我希望该组/ id中的以下元素为“c”。例如,id 1的变量状态应该看起来像NA,“a”,“c”,“c”。

我的第二个目标是在a之前删除NA的记录/行。然后,id 1的变量状态看起来像“a”,“c”,“c”。

我的第三个目标是向后移动字符串“c”直到第一个“a”(如果在“a”之前没有“c”)或者到组的末尾。对于id 3,这看起来像“c”,“c”,“c”,“c”。对于id 5,这看起来像“a”,“c”,“c”,“c”。

理想情况下,我的数据框架如下:

status:  a,c,c,  a,a,c,c,  c,c,c,c,  c,c,c,c,  a,c,c,c.

我发现你可以使用na.locf来传播一个元素,如果有NA的话,但是如果我想覆盖/替换NA以外的其他值,我认为这不行。

我对如何解决我的主要目标特别感兴趣。这可能吗?

0 个答案:

没有答案