В настоящее время я создаю сценарий R для извлечения определенных вложений электронной почты из моего почтового ящика, перетаскивания вложений в фреймы данных (с тем же именем, что и имя файла), а затем разбора имен фреймов данных в отдельные элементы, которые затем можно использоватьсоздать новые столбцы в рамках кадра данных.Затем он будет rbind-ed и, наконец, будет перенесен в таблицу SQL.
Я нахожусь на этапе, когда мне нужен цикл, чтобы зацикливаться на именах кадров данных, анализировать их и добавлять их как новые столбцы, ноЯ не могу заставить мою петлю работать.
Я привел пример моего кода ниже:
df_list <- Filter(function(x) is.data.frame(get(x)), ls())
for(i in df_list){
i["Filename"] <- df_list[i]
i["Campaign_ID"] <- sapply(strsplit(df_list[i], " "), "[", 1)
i["Campaign_Name"] <- str_sub(regmatches(df_list[i], regexpr("(?<=\\ )[^_]+", df_list[i], perl=TRUE)), start = 1, end = str_length(regmatches(df_list[i], regexpr("(?<=\\ )[^_]+", df_list[i], perl=TRUE))) - str_length(regmatches(df_list[i], regexpr("([A-Z]+[A-Z])[^_]+", df_list[i], perl=TRUE)))-1)
i["Campaign_Code"] <- regmatches(df_list[i], regexpr("([A-Z]+[A-Z])[^ -]+", df_list[i], perl=TRUE))
i["Brand"] <- substr(regmatches(df_list[i], regexpr("([A-Z]+[A-Z])[^ -]+", df_list[i], perl=TRUE)), start = 1, stop = 4)
i["Campaign_Type"] <- substr(regmatches(df_list[i], regexpr("([A-Z]+[A-Z])[^ -]+", df_list[i], perl=TRUE)), start = 5, stop = 7)
i["Campaign_Category"] <- substr(regmatches(df_list[i], regexpr("([A-Z]+[A-Z])[^ -]+", df_list[i], perl=TRUE)), start = 8, stop = 10)
i["Campaign_Churn"] <- substr(regmatches(df_list[i], regexpr("([A-Z]+[A-Z])[^ -]+", df_list[i], perl=TRUE)), start = 11, stop = 13)
i["Product"] <- substr(regmatches(df_list[i], regexpr("([A-Z]+[A-Z])[^ -]+", df_list[i], perl=TRUE)), start = 14, stop = 16)
i["Version"] <- substr(regmatches(df_list[i], regexpr("([A-Z]+[A-Z])[^ -]+", df_list[i], perl=TRUE)), start = 17, stop = 17)
i["Segment"] <- regmatches(df_list[i], regexpr("(?<=\\_)[^ -]+", df_list[i], perl=TRUE))
i["Churn"] <- regmatches(df_list[i], regexpr("(?<=\\- )[^ -]+", df_list[i], perl=TRUE))
i["Stage"] <- regmatches(df_list[i], regexpr("([S-S]+[a-z]+[a-z]+[a-z]+[a-z] )[^\\s]+", df_list[i], perl=TRUE))
i["Other"] <- str_sub(regmatches(df_list[i], regexpr("([S-S]+[a-z]+[a-z]+[a-z]+[a-z] )[^.]+", df_list[i], perl=TRUE)), start = str_length(regmatches(df_list[i], regexpr("([S-S]+[a-z]+[a-z]+[a-z]+[a-z] )[^\\s]+", df_list[i], perl=TRUE)))+2, end = str_length(regmatches(df_list[i], regexpr("([S-S]+[a-z]+[a-z]+[a-z]+[a-z] )[^.]+", df_list[i], perl=TRUE))) - str_length(regmatches(df_list[i], regexpr("\\S+(?=\\.[^.]*$)", df_list[i], perl=TRUE)))-1)
i["Date"] <- dmy(regmatches(df_list[i], regexpr("\\S+(?=\\.[^.]*$)", df_list[i], perl=TRUE)))
print(i)
}
Я полагаю, что это что-то простое, что мне не хватает в моем цикле, но я не могу понять, что.Я попробовал это без разбора, просто добавив случайные данные, но он по-прежнему не работает
Для ясности я также предоставил содержимое df_list (это действительно фреймы данных - они просто называютсято же самое, что файл, из которого они были получены для анализа):
[1] "20579 Buzz Testing Nathan 1 BUZZRETJOUCHUALLA_D1A - Churned - Stage 1 Other 28-February-2019.csv"
[2] "20580 Buzz Testing Nathan 2 BUZZRETJOUCHUALLA_D1B - Churned - Stage 1 Other 28-February-2019.csv"
[3] "20581 Buzz Testing Nathan 3 BUZZRETJOUCHUALLA_D1C - Churned - Stage 1 Other 28-February-2019.csv"
Редактировать: Я подумал, что добавлю еще несколько воспроизводимых данных, которые помогут прояснить ситуацию.
`20579 Buzz Testing Nathan 1 BUZZRETJOUCHUALLA_D1A - Churned - Stage 1 Other 28-February-2019.csv` <- data.frame(ID = 000000, Code = 'ABCDE')
`20580 Buzz Testing Nathan 2 BUZZRETJOUCHUALLA_D1B - Churned - Stage 1 Other 28-February-2019.csv` <- data.frame(ID = 111111, Code = 'FGHIJ')
`20581 Buzz Testing Nathan 3 BUZZRETJOUCHUALLA_D1C - Churned - Stage 1 Other 28-February-2019.csv` <- data.frame(ID = 222222, Code = 'KLMNO')
Затем в каждом фрейме данных создайте новый столбец, используя элементы имени фрейма данных для их заполнения.Так, например, для первого кадра данных, первые 5 цифр имени кадра данных будут, например, campID.У меня уже есть разбиение строк для этих элементов, как упоминалось ранее в моем вопросе.