Спасибо за то, что пытаетесь быть яснее и пытаетесь добавить минимальный воспроизводимый пример! Это помогло мне понять ваш вопрос! Вероятно, есть много способов сделать то, что вы хотите, вот одно решение с использованием циклов:
Создайте пример данных, как в вашем вопросе:
df <- data.frame(ColA=c("PAR", "NYC", "EEE"),
ColB=c("BKK", "LON", "ZRH"),
DoW = c("1_3_5__", "1_____7", "__"),
stringsAsFactors = FALSE)
Создайте пустой data.frame для получить результаты
resulting_df <- data.frame(ColA = character(),
ColB = character(),
Number = numeric(),
stringsAsFactors = FALSE)
Теперь получите числа из столбца 'DoW', используя strsplit
numbers_list <- sapply(df$DoW, strsplit, "_")
Наконец, выполните итерации по каждой строке df
и по каждой цифре в соответствующая запись в numbers_list (используя [[1]] для получения актуального содержимого!)
for (i in 1:nrow(df)) {
for (number in numbers_list[i][[1]]) {
if (!number %in% c("")) {
new_line <- data.frame(ColA = df$ColA[i], ColB = df$ColB[i], Number = number, stringsAsFactors = FALSE)
resulting_df <- rbind(resulting_df, new_line)
}
}
}
Объект resulting_df
теперь должен иметь правильную форму.