我需要更新对象值=="修复"以便它们更新为同一变量中的进程值的值。我的问题是,当前一个值也是=="修复"它没有看到更新的值(因为它显然还没有更新,为什么不呢?)。我担心我没有词汇可以提出正确的问题,所以这就是它的样子。
所以如果这是我的数据框(df):
row x
1 a
2 b
3 fix
4 fix
5 fix
6 b
7 a
8 fix
9 fix
我运行我的代码:
df$x2 <- ifelse( df$x=="fix",lag(df$x2),df$x)
我明白了:
row x x2
1 a a
2 b b
3 fix b
4 fix fix
5 fix fix
6 b b
7 a a
8 fix a
9 fix fix
但我想要的是:
row x x2
1 a a
2 b b
3 fix b
4 fix b
5 fix b
6 b b
7 a a
8 fix a
9 fix a
任何帮助都将受到赞赏(包括如何更好地构建我的问题的问题和/或标题)。
答案 0 :(得分:0)
也许不是最快的(因为我用于循环),但工作:
df2 <- data.frame(x=c("a","b", "fix", "fix", "fix", "b", "a", "fix", "fix"), stringsAsFactors = FALSE)
#df2 <- cbind(df2, data.frame(x2=character(nrow(df2)), stringsAsFactors = FALSE))
for(i in 1:nrow(df2))
{
if(df2$x[i]=="fix")
{
df2$x2[i] <- df2$x2[i-1]
}
else
{
df2$x2[i] <- df2$x[i]
}
}
df2