У меня есть датафрейм, который включает столбец идентификаторов кодов. Когда код заканчивается на 0, я хочу заменить его на 1.
Через много проб и ошибок у меня есть цикл for, который почти работает. Это работает, когда есть только один код, который заканчивается на 0, и он находится в последней строке кадра данных. Если есть другая строка данных, цикл for не выдает желаемого результата.
library(stringr)
df_a <- data.frame(a = c("02.1.1", "02.1.1.0"))
df_b <- data.frame(a = c("02.1.1", "02.1.1.0", "02.1.2"))
for (i in nrow(df_a)){
df_a$adj <- ""
df_a$code_adj <- ""
if (str_sub(df_a[i, "a"], -1, -1) == "0"){
df_a[i, "adj"] <- "1"
df_a[i, "code_adj"] <- paste0(str_sub(df_a[i, "a"], 1, -2), df_a[i, "adj"])
}
}
Когда я запускаю цикл for на фрейме данных df_a, он дает желаемый результат. Когда я запускаю его на df_b, это не так.
Я открыт для лучшего подхода к этой проблеме, но я также хотел бы знать, почему цикл for ведет себя так, как он работает на разных фреймах данных.