My data frame looks like this. (it has ~ 300,000 rows)
I want to do this operation faster and elegantly.
How can i overcome this problem. Thanks in advance.
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]
We can try
df$X <- ifelse(df$X == 0, lag(df$Y), df$X)
If we need to ignore the first row
df[2:nrow(df), ] <- with(df[2:nrow(df), ], ifelse(X == 0, lag(Y), X))