У меня есть два файла, один с классификационными кодами с соответствующими именами и один исходный кадр данных, который содержит только классификационные коды.
Я хочу добавить к фрейму данных соответствующее имя для каждого идентификатора, как указано в файле кодов классификации (который содержит гораздо больше уникальных идентификаторов, чем исходный файл данных).
Как я могу это сделать?
Я попытался использовать цикл for следующим образом:
for (i in 1:length(data$SCC)) {
for (j in 1:length(classification$SCC)){
if (as.numeric(data$SCC[i]) == as.numeric.factor(classification$SCC[j])) {
data$Short.Name[i] <- classification$Short.Name[j];
}
}
}
Где SCC - это переменная, которая содержит идентификаторы (например, «1001004»), которая одинакова в кадре «классификация» (классификация $ SCC).
В «классификации» код SCC связан с именем «Short.Name». И поэтому я хочу просмотреть циклы кодов SCC фрейма данных и добавить значение Short.Name, содержащееся в «классификации», во фрейм «данных» на основе идентификатора SCC (мне пришлось создать данные $ Short.Name в виде новая переменная для этого).
Примечание. Мне пришлось преобразовать значения в обоих столбцах SCC в числовые значения, поскольку значения SCC во фрейме «data» имеют формат символов, а в «classfication» - в формате factor.
Но я получаю ошибку:
Error in if (as.numeric(data$SCC[i]) == as.numeric.factor(classification$SCC[j])) { :
missing value where TRUE/FALSE needed
Я предполагаю, что это потому, что цикл 'j' длиннее, чем 'i', поскольку длина (классификация $ SCC) больше, чем в кадре 'data'.
Есть ли лучший способ связать уникальные идентификаторы с соответствующими именами, как описано в другом файле?
Заранее спасибо!