У меня проблема со скриптом в R. У меня есть фрейм данных (CSV) с несколькими сотнями строк в каждом файле. Я хочу сравнить с файлами (более новые с более старыми). В старшем есть определенные значения, такие как Страна, Customer_ID, Категория и Представитель_ID. У каждого клиента есть клиент. И иногда клиент меняет. И изменения есть в каждом файле. Таким образом, самый старый файл (dataframe) является базовой базой данных, в следующем файле есть только изменения. Итак, скажем:
PL|Pharmacy|WPLF1111123233|F111
, где WPLF1111123233 - идентификатор клиента, а F112 - идентификатор представителя.
в следующем кадре данных есть
PL|Pharmacy|WPLF1111123233|F333
то же самое, что и выше, но тот же представитель изменился с F111 на F333
поэтому я попытался использовать формулу, как это. Проверка идентификатора клиента в первом и втором фреймах данных, а также наличие второго идентификатора ClientID означает, что представитель был изменен, поэтому в первом файле я тоже должен его изменить.
dataset$RepID <- ifelse ((dataset$CustomerID %in% dataset2$CustomerID), dataset2$RepID, dataset$RepID)
где набор данных - это только первый кадр данных, а набор данных2 - это кадр данных с изменениями. «RepID» - столбец с репрезентативным идентификатором. Я использовал Ifelse, потому что обычный If не работает для векторов. Это ложь, потому что у нее нет никакого порядка, и я не знаю, как это опустить. Я искал ответ, но не мог найти ни одного. Спасибо за помощь.
В общем, у меня около 350 файлов, но для этого это будет один простой цикл, так что это не проблема.
EDIT:
Старые данные для проверки
D|PL|Terytorium_nowe|WPLF00003224|25|F123|1
D|PL|Terytorium_nowe|WPLF02818905|26|F120|1
I|PL|Terytorium_nowe|WPLF02615545|20|F110|1
I|PL|Terytorium_nowe|WPLF02615553|36|F112|1
I|PL|Terytorium_nowe|WPLF02615557|01|F106|1
I|PL|Terytorium_nowe|WPLF02615561|36|F112|1
I|PL|Terytorium_nowe|WPLF02615564|31|F101|1
I|PL|Terytorium_nowe|WPLF00007731|34|F132|1
ИЗМЕНЕНИЙ:
D|PL|Terytorium_nowe|WPLF07253186|17|Grandpa|1
D|PL|Terytorium_nowe|WPLF00003224|25|Pontiac|1
D|PL|Terytorium_nowe|WPLF02818905|26|Catalina|1
I|PL|Terytorium_nowe|WPLF02615545|20|Chicago|1
I|PL|Terytorium_nowe|WPLF02615557|01|Foxtrot|1
I|PL|Terytorium_nowe|WPLF02615553|36|Tango|1
I|PL|Terytorium_nowe|WPLF02615561|36|Hollywood|1
I|PL|Terytorium_nowe|WPLF02615564|31|Zulu|1
Таким образом, список из DataToCheck должен быть обновлен -> имена должны быть изменены с F(numbers)
на Nato Alphabet
и строка с идентификатором WPLF00007731
и ID F132
из DataToCheck не должна быть затронута или изменена, а строка из Changes с Grandpa
следует добавить к первому DataToCheck