Почему перекод в R не изменяющий исходные значения?

Я пытаюсь использовать recode в R (от car пакет), и это не работает. Я читал в данных из .csv файла в названный кадр данных results. Затем я заменяю значения в столбце Built_year, согласно следующей логике.

recode(results$Built_year, 
       "2 ='1950s';3='1960s';4='1970s';5='1980s';6='1990s';7='2000 or later'")

Когда я проверяю results$Built_year после выполнения этого шага это, кажется, работало. Однако это не хранит это значение и возвращается к его предыдущему значению. Я не понимаю почему.

Спасибо.

(в данный момент что-то идет не так, как надо, и я не вижу ни одного из значков для форматирования),

5
задан Jeromy Anglim 12 September 2014 в 04:04
поделиться

2 ответа

Вам нужно присвоить новой переменной.

Рассмотрим пример из recode в пакете car

R> x <- rep(1:3, 3)
R> x
[1] 1 2 3 1 2 3 1 2 3
R> newx <- recode(x, "c(1,2)='A'; else='B'")
R> newx
[1] "A" "A" "B" "A" "A" "B" "A" "A" "B"
R> 

Кстати, пакет называется car, а не cars.

16
ответ дан 18 December 2019 в 08:27
поделиться

car::recode (и сам R) не работает как функция SPSS Recode, поэтому если вы применяете преобразование к переменной, вы должны присвоить его переменной, как сказал Дирк. Я не использую car::recode, хотя это довольно просто... учитесь работать с факторами... как я вижу, вы можете применить as.numeric(results$Built_year) и получить тот же эффект. ИМХО, использование car::recode в этом манере тривиально. Вы ведь хотите только изменить фактор на числовой, верно... Ну, вы будете удивлены, когда увидите это:

> x <- factor(letters[1:10])
> x
 [1] a b c d e f g h i j
Levels: a b c d e f g h i j
> mode(x)
 [1] "numeric"
> as.numeric(x)
 [1]  1  2  3  4  5  6  7  8  9 10

И, парень, мне нравится отвечать на вопросы, в которых упоминаются факторы... =) Познакомьтесь с факторами, и вы увидите магию "перекодировки" в R! =) Сайт Роба Кабакоффа - хорошая отправная точка.

3
ответ дан 18 December 2019 в 08:27
поделиться
Другие вопросы по тегам:

Похожие вопросы: