Запись дискретной переменной - PullRequest
0 голосов
/ 27 февраля 2020

У меня есть дискретная переменная с оценками от 1-3. Я хотел бы изменить его так, чтобы 1 = 2, 2 = 1, 3 = 3.

Я пытался

recode(Data$GEB43, "c(1=2; 2=1; 3=3")

Но это не работает.

Я знаю, что это слишком глупый вопрос, который может быть решен в Excel за считанные секунды, но я пытаюсь научиться делать такие основы в R.

Ответы [ 2 ]

3 голосов
/ 27 февраля 2020

Мы всегда должны предоставлять минимальный воспроизводимый пример :

df <- data.frame(x=c(1,1,2,2,3,3))

Вы не указали пакет для recode, поэтому я предположил dplyr. ?dplyr::recode говорит нам, как аргументы должны быть переданы функции. В первоначальном вопросе "c(1=2; 2=1; 3=3" - это строка (т.е. не выражение R, а строка символов "c (1 = 2; 2 = 1; 3 = 3"). Чтобы сделать это выражение R, мы должны избавиться двойных кавычек и замените ; на ,. Кроме того, нам нужна закрывающая скобка, то есть c(1=2, 2=1, 3=3). Но, тем не менее, как говорит ?dplyr::recode, это не способ передать эту информацию recode :

Решение с использованием dplyr::recode:

dplyr::recode(df$x, "1"=2, "2"=1, "3"=3)

Возвращает:

[1] 2 2 1 1 3 3
1 голос
/ 27 февраля 2020

Предположим, вы имеете в виду dplyr::recode, синтаксис:

recode(.x, ..., .default = NULL, .missing = NULL)

Из документации написано

.x - вектор для изменения

... - Замены. Для персонажа и фактора .x они должны быть названы, а замена основана только на их имени. Для цифр c .x они могут быть именованы или нет. Если имя не указано, замена выполняется на основе позиции, т. Е. .X представляет позиции, которые нужно искать в заменах

Так что, если у вас есть числовое значение c, вы можете заменить на основе позиции непосредственно

recode(1:3, 2, 1, 3)
#[1] 2 1 3
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...