У меня сложная проблема с кодированием, надеюсь, вы можете помочь:
Каждый месяц мне приходится вносить изменения в таблицу поиска, используя таблицу изменений, в которой указаны (1) новые продукты, которые необходимо добавить, и (2) изменения в названиях продуктов. Я пытаюсь автоматизировать этот процесс, потому что я обрабатываю более 40000 строк данных. Здесь слишком много конфиденциальных данных, чтобы показать их, но я привел небольшой пример данных и процесса ниже:
Таблица поиска
dput(LookupFile)
structure(list(ProductTag = structure(c(1L, 6L, 3L, 5L, 2L, 7L,
4L), .Label = c("Confect", "Orange", "Pastries", "Root", "Sauces",
"Spread", "White"), class = "factor"), Brand = structure(c(1L,
1L, 1L, 2L, 2L, 3L, 4L), .Label = c("A", "B", "C", "D"), class = "factor"),
BrandID = c(340, 340, 340, 400, 400, 402, 403), Name = structure(c(3L,
4L, 1L, 7L, 2L, 5L, 6L), .Label = c("Cakes", "Carrots", "Choc",
"Honey", "Onions", "Potatoes", "Syrups"), class = "factor"),
NameID = c(200, 700, 100, 300, 1000, 1200, 1700)), class = "data.frame", row.names = c(NA,
-7L))
Таблица изменений
dput(ChangesFiles)
structure(list(ProductTag = structure(c(1L, 3L, 2L), .Label = c("Breads",
"Confect", "Flours"), class = "factor"), Brand = structure(c(1L,
2L, 1L), .Label = c("A", "D"), class = "factor"), BrandID = c(340,
403, 340), Name = structure(c(2L, 3L, 1L), .Label = c("Chocolate",
"Gluten", "Staple"), class = "factor"), NameID = c(4000, 3400,
200)), class = "data.frame", row.names = c(NA, -3L))
Я знаю, rbind
позволяет мне добавлять новые данные в таблицу поиска:
rbind(LookupFile,ChangesFiles)
Однако существует дополнительный уровень необходимости вносить изменения в существующие строки (т. Е. Название продукта). В приведенном мной примере я хочу изменить следующую запись, используя запись ChangesFiles, которая заменяет Name = 'Choc' на 'Chocolate':
<ProductTag = 'Confect', Brand = 'A', BrandID = '340', Name = 'Choc', NameID = '200'
Это небольшая выборка данных, поэтому я мог легко внести это изменение вручную. Тем не менее, как бы я сделал изменения в больших масштабах?
Я бы хотел, чтобы это выглядело так:
ProductTag Brand BrandID Name NameID
1 Confect A 340 Chocolate 200
2 Spread A 340 Honey 700
3 Pastries A 340 Cakes 100
4 Sauces B 400 Syrups 300
5 Orange B 400 Carrots 1000
6 White C 402 Onions 1200
7 Root D 403 Potatoes 1700
8 Breads A 340 Gluten 4000
9 Flours D 403 Staple 3400