#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, может быть идеей.