Что вы показываете это возможно, но вы можете упростить код для одного вызова делает сравнение с помощью бинарного оператора %in%
, Вот пример использования фиктивных данных:
set.seed(1)
var <- factor(sample(c("missing","unknown","uncoded", 1:4), 100, replace = TRUE))
Это дает нам фактор вектор вроде этого:
> head(var)
[1] unknown uncoded 2 4 unknown 4
Levels: 1 2 3 4 missing uncoded unknown
> table(var)
var
1 2 3 4 missing uncoded unknown
14 15 17 13 10 18 13
Чтобы установить все эти значения закодированных как любой из c("missing","unknown","uncoded")
в NA
, мы делаем это в одиночный выстрел:
var2 <- var ## copy for demo purposes, but you can over write if you wish
var2[var2 %in% c("missing","unknown","uncoded")] <- NA
который дает
> var2[var2 %in% c("missing","unknown","uncoded")] <- NA
> head(var2)
[1] <NA> <NA> 2 4 <NA> 4
Levels: 1 2 3 4 missing uncoded unknown
> table(var2)
var2
1 2 3 4 missing uncoded unknown
14 15 17 13 0 0 0
Обратите внимание, что исходные уровни сохранены. Если вы хотите, чтобы удалить эти уровни, то мы можем применить droplevels()
функция var2
:
var2 <- droplevels(var2)
который дает
> head(var2)
[1] <NA> <NA> 2 4 <NA> 4
Levels: 1 2 3 4
> table(var2)
var2
1 2 3 4
14 15 17 13
отметить также, что по умолчанию NA
не отображаются в табличной выходе, но мы исправьте это, чтобы показать вам, что они все еще существуют:
> table(var2, useNA = "ifany")
var2
1 2 3 4 <NA>
14 15 17 13 41
«Предпочтительный» способ, скорее всего, зависит от анализа, который вы пытаетесь сделайте, и вы получите много мнений. Возможно, перефразирование вопроса на что-то вроде «Как может R представлять недостающие данные» может помочь. Однако ответ на этот вопрос, вероятно, уже существует. – BenBarnes
Спасибо, но я думал, что отсутствующие данные всегда представляются как NA? Я всегда просто разбирался с данными, которые уже были закодированы как NA, но на этот раз у меня есть другие кодировки. –
А, я не знал, ссылаетесь ли вы на предпочтительный способ перекодирования или на предпочтительный способ устранения недостающих значений. Если вы уверены, что хотите скомпоновать их как «NA», вы также можете рассмотреть «NA_character_',' NA_integer_' и т. Д. (Перечисленные под '?" NA "') – BenBarnes