изменение коэффициентов на числовые - как справиться с недоступными значениями

У меня есть большой набор данных из анкеты. Импорт его из SPSS в R (с использованием SPSS's Stata-Output) дал мне ответ на каждый вопрос как фактор.

Вопрос имеет ответы от 1 до 10. Однако есть много пропущенных значений. R тоже их узнает.

Однако теперь я хотел бы сделать некоторые вычисления - например, я хочу вычислить среднее значение ответа (не очень хорошая статистика, я знаю, неважно).

Поэтому я должен перекодировать коэффициенты в числовые значения. Я сделал это с as.numeric().

Однако теперь у меня есть пропущенные значения, закодированные как от 11 до 14. Конечно, я не могу вычислить какое-либо среднее значение, подобное этому.

Каким будет правильный способ перекодировать факторы как числовые и указать R установить любое значение больше 10 в NA?

Пример: Ты любишь рыбу?

    not at all                   very much | don't know  no answer  don't tell
R:  1   2   3   4   5   6   7   8   9   10 |     11          12         13

person speendo    schedule 23.02.2011    source источник


Ответы (2)


Если вам действительно не нужны пропущенные значения, я бы сделал что-то вроде:

a[a>10] <- NA

Затем вы можете использовать:

mean(a, na.rm=TRUE)

В качестве альтернативы, если вы хотите обойти эти отсутствующие значения, вы можете просто использовать:

mean(a[a<=10])
person Noah    schedule 23.02.2011
comment
другая возможность (просто так, чтобы вы знали): предположим, что «a» — это data.frame, а «fish» — это имя переменной, которую вы хотите изменить, просто используйте: a$fish = ifelse(a$fish›10, NA, $ рыба). - person Manoel Galdino; 24.02.2011

Давайте назовем ваш фрейм данных data (сначала вы можете сделать копию). Следующее установит для всех значений больше 10 во всех столбцах значение NA:

data[data>10]<-NA

Вышеприведенное предполагает, что вы уже применили as.numeric.

person NPE    schedule 23.02.2011
comment
большое спасибо! Я еще никогда не использовал левую часть определения переменной. очень интересно :) - person speendo; 23.02.2011