Как связать файл классификации с идентификатором во фрейме? - PullRequest
1 голос
/ 21 марта 2019

У меня есть два файла, один с классификационными кодами с соответствующими именами и один исходный кадр данных, который содержит только классификационные коды.

Я хочу добавить к фрейму данных соответствующее имя для каждого идентификатора, как указано в файле кодов классификации (который содержит гораздо больше уникальных идентификаторов, чем исходный файл данных).

Как я могу это сделать?

Я попытался использовать цикл 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'.

Есть ли лучший способ связать уникальные идентификаторы с соответствующими именами, как описано в другом файле?

Заранее спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...