我的数据框看起来像这样。 (它有~300,000行) 我想更快更优雅地完成这项操作。 我怎样才能克服这个问题。提前谢谢。
df <- data.frame(
X = sample(0:1, 10, replace = T),
Y = sample(10:20, 10, replace = T)
)
for (i in 2:(nrow(df)))
{
if (df$X[i] == 0)
{
df$X[i] = df$Y[i - 1]
}
}
答案 0 :(得分:2)
我们可以尝试lag
df$X <- ifelse(df$X == 0, lag(df$Y), df$X)
如果我们需要忽略第一行
df[2:nrow(df), ] <- with(df[2:nrow(df), ], ifelse(X == 0, lag(Y), X))