У меня есть еще одна проблема и надеюсь на вашу помощь. Я уже поступил в googled, спросил друга и попытался понять похожие проблемы/вопросы вокруг этого сайта, но я до сих пор не могу понять ...как преобразовать фактор-переменную в числовое значение - с помощью R
Хорошо, вот моя проблема: У меня есть большой набор данных, который охватывает данные за период с 1980 по 2012 год. Я использовал read.spss функцию, чтобы получить данные в R
rohdaten <-read.spss("C:\\Users\\xxxxxxx.sav", use.value.labels = TRUE, to.data.frame = TRUE,
max.value.labels = Inf, trim.factor.names = FALSE,
trim_values = TRUE, reencode = NA, use.missings = TRUE)
Это, кажется, работает. Затем я хотел бы проанализировать переменную 14 (v14), которая является шкалой смешения, исходящей из «полностью согласного» с «не соглашаться вообще» и поэтому кодируется как фактор. Я хотел бы сравнить изменение ответов с этим шкалом со знаком с течением времени, и поэтому я хочу рассчитать среднее значение этого, и для этого он должен быть числовым. Это первый шаг в проблеме ... Согласно R for Dummies Мне нужно сначала изменить множитель на символ, а затем изменить его на числовое. Хорошо ... вот мой код ... Прежде всего, я попробовал функцию recode(), которая не сработала - тогда я просто продолжил и создал новый объект «econ», который называет экземпляр переменной14 в копии. (Так что я не влияю на исходные данные V14 в рабочей области)
rohdaten$v14_2 <- recode(rohdaten$v14, "8 = NA; 9 = NA; 0 = NA; 1 = 1; 2 = 2; 3 = 3; 4 = 4; 5 = 5; as.factor.result = FALSE") #should recode already - kinda doesn't work
class(rohdaten$v14_2) #just tells me it's a factor...
str(rohdaten$v14_2)
econ <- rohdaten$v14_2
С «для чайников-сайта» в виде изменить вещи в символы, а затем в цифровую
str(econ)
as.character(econ)
head(econ)
econ <- as.numeric(econ)
head(econ)
Этого по какой-то причине дает мне «хороший» результат, несмотря на «ошибку» (??) в строке «как символ» ... Если я иду с econ <- as.character(econ)
- я получаю «Предупреждающее сообщение: NAs, введенные принуждением» после econ <- as.numeric(econ)
...
Хорошо, пока это работает как-то, я думаю !?
Но я хочу, чтобы вычислить среднее за каждый год (который находится в переменной 2) , и я наткнулся на функцию by()
, которая выглядела, как это делает именно то, что я хочу, так что мой код оказался:
avgEconRat <- by(data = rohdaten, INDICES = rohdaten$v2, FUN = mean, na.rm = T)
head(avgEconRat) #actually gives me some means - not sure though whether it's the real means or the means of the "factor-number" that's mentioned in the "for-dummies-website" - sorry I can't explain it better :-(
Теперь у меня есть данные в объекте avgEconRat, но в первую очередь я не уверен, правильно ли я имею в виду, а во-вторых, и это как-то главная проблема, как я могу ссылаться на мои данные теперь для его построения?
p1 <- ggplot(na.action=na.exclude, rohdaten, aes(v14, v2))
p1 + geom_point(aes(color = v652), alpha = 0.6) +
facet_grid(. ~ v5)
Вот код, который я имел в виду, - и я знаю, что я должен был бы заменить «rohdaten» с «Econ» сейчас, но так как я понятия не имею, как «Econ» структурирован (а также Дон» я действительно знаю, как это выяснить), я абсолютно застрял здесь: -/ Я чувствую, что у меня есть (или, возможно, в зависимости от того, являются ли мои средства правильными ...) данные, которые мне нужны, но как-то потерянный доступ к Это.
Прошу прощения за мои странные проблемы, но обучение программированию без реального наставничества является чем-то трудным без какого-либо предыдущего опыта.
Большое спасибо за ваше терпение, время и помощь!
Неужели http://stackoverflow.com/questions/3418128/how-to-convert-a-factor-to-an-integer-numeric-without-a-loss-of-information не помогает? Без набора данных [воспроизводимого] (http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example) нелегко сказать, что может происходить в вашем конкретном случае , Кажется, что хотя бы одно из ваших значений не похоже на число R. – MrFlick