我有一个带有字段 x 的数据框,其中包含组名(在下面的示例中标记为字母)和组成员(列在组名下,标记为数字)。我想创建一个字段,为每个成员显示其组的名称。在下面的数据框中,所需的输出显示在“结果”列中。
df <- data.frame("x"=c("A","1","2","B","C","1","2","C","D","1"),
"outcome"=c("A","A","A","B","C","C","C","C","D","D")
) %>%
mutate(
Letter = ifelse(grepl("[A-Za-z]", x) == T,"Letter",
"No Letter")
)
我的想法是通过 forloop 做到这一点。如果 x 是一个字母,它应该返回那个字母,如果不是,它应该返回前一个循环的结果(这是在 x 中找到的前一个字母)。下面的 forloop 没有给出正确的输出:
df$outcome_calc[1] <- "A"
for (i in 2:10) {
df$outcome_calc[i] <- ifelse(df$Letter[i] == "No Letter",df$outcome_calc[i-1],df$x[i])
}
任何想法如何获得正确的输出?