如何将 "for loop" 转换为 "apply family functions"
How to convert "for loop" to "apply family functions"
我的数据框如下所示。 (它有大约 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]
}
}
我们可以试试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))
我的数据框如下所示。 (它有大约 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]
}
}
我们可以试试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))