我有一个这样的数据框:
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以外的其他值,我认为这不行。
我对如何解决我的主要目标特别感兴趣。这可能吗?