Перекодируйте разные номера в NAs в R

#r #missing-data #recode

#r #недостающие данные #перекодировать

Вопрос:

У меня большой набор данных с 760 переменными. Я хотел бы перекодировать числа в NAs, и я всегда использовал эту простую вещь:

 dataset[dataset==99] <- NA
 

Но на этот раз у меня проблема: в этом наборе данных недостающие значения — это разные числа! Некоторые отсутствующие значения — 9, некоторые 99, 999, 9999 и 9999999… В некоторых случаях, когда 9 является правдоподобным значением для переменной, недостающее значение равно 99 или более. Это действительно плохой набор данных (созданный для SPSS), но я не могу его изменить. Я мог бы выяснить, какая переменная имеет какое отсутствующее значение. Я использовал функцию из библиотеки matrixStats::colMaxs, но я не знаю, как я могу перекодировать правильные пропущенные значения в NAs. Есть идеи?

Максимальные значения для каждого столбца ниже. Вы можете видеть, что в некоторых столбцах нет пропусков, но такие числа, как 9 или 99, все еще правдоподобны (например, первые столбцы).

 [1]      276     2068 20680101   206801        4       99        9

 [8]        9       99        9        9        9        9        9
 [15]        9        9        9        9        9        9        9
 [22]        9        9        9        9        9        9        9
 [29]        9        9        9        9        9        9        9
 [36]        9        9        9        9        9        9        9
 [43]        9        9        9        9        9        9        9
 [50]        9        9        9        9        9       99       99
 [57]       99       99       99       99        9        9        9
 [64]        9        9        9        9        9     9999     9999
 [71]        9        9        9        9        9        9        9
 [78]        9        9        9        9        9        9        9
 [85]        9        9        9        9        9        9        9
 [92]        9        9        9        9        9        9        9
 [99]        9        9        9        9        9        9        9
[106]        9        9        9        9        9        9        9
[113]        9        9        9        9        9        9        9
[120]        9        9        9        9        9        9        9
[127]        9        9        9        9        9        9        9
[134]        9        9        9        9        9        9        9
[141]        9        9        0        1        4        2        1
[148]   999999        9   999999        9   999999        9   999999
[155]        9        9     9999     9999       34        9        9
[162]        9        9        9        9        9        9        9
[169]        9        9        9        9        9        9        9
[176]        9        9        9        9        9        9        9
[183]        9     -Inf     -Inf      999      999      999      999
[190]      999        9        9        9        9        9        9
[197]        9        9        9        9        9        9        9
[204]        9        9        9        9        9        9        9
[211]        9        9        9        9        9        9        9
[218]        9        9        9        9        9     -Inf     -Inf
[225]     -Inf        9     -Inf     -Inf     -Inf        9     -Inf
[232]     -Inf     -Inf        9       99      135        9        9
[239]        9        9        9        9        9        9        9
[246]     -Inf        9        9        9        9        9        9
[253]        9        9        9        9        9        9        9
[260]        9        9        9        9        9        9        9
[267]        9        9        9        9        9        9        9
[274]        9        9        9        9        9        9        9
[281]        9        9        9        9        9        9        9
[288]        9        9        9        9        9        9        9
[295]        9        9        9        9        9        9        9
[302]        9        9        9        9        9        9        9
[309]        9        9        9        9        9        9        9
[316]        9        9        9        9        9        9        9
[323]        9        9        9        9        9        9        9
[330]        9        9        9        9        9       99        9
[337]        9        9        9        9        9        9        9
[344]        9        9        9        9        9        9        9
[351]        9        9        9       99        5        5        3
[358]        5        5        5        6        5        3        3
[365]        3        3
 

Комментарии:

1. Привет, Магдалена! Похоже, вы немного смущены тем, что означают данные? Мы не можем вам с этим помочь. Сначала четко определите, что вы хотите сделать с этой таблицей, и определите ее, используя четкие однозначные термины на простом английском языке. Тогда мы можем помочь вам, как это сделать в R 🙂

2. Мы не можем точно сказать вам, какую логику использовать, чтобы решить, является ли, скажем, 999 отсутствующее или правдоподобное значение для определенного столбца. Если у вас появится идея, мы поможем вам ее реализовать. Возможно, просмотр таблицы значений для каждого столбца поможет вам решить, lapply(your_data, table) . Но вы знаете о своих данных гораздо больше, чем мы, поэтому мы не можем рассказать вам о их значении.

3. Если у вас есть исходный набор данных SPSS, вы можете попробовать прочитать данные haven::read_spss() . Он сохранит метки, чтобы вы могли знать, какие значения соответствуют пропускам

4. Я согласен с другими комментаторами, которые затрудняются что-то сказать о ваших данных (поскольку мы этого не знаем. В зависимости от структуры данных, вычисление каких-либо медианных или 3-х квартильных границ и вычитание оттуда, если 99, 999 должно быть NA, может быть идеей.