R начинающий стандарт относительно уровней группировки, используемых в - PullRequest
0 голосов
/ 01 февраля 2012

Итак, одна из проблем, с которыми я застрял, заключается в том, что:

У меня есть некоторая переменная X, которая принимает значения {1,2,3,4}.Таким образом

X: 1 2 2 4 2 3

То, что я хочу сделать, это превратить 1 и 2 в A, а 3 и 4 в B.

Есть ли возможные предложения, как бы я поступил так?Или подсказки?

Сначала я думал об использовании команды subset, но, похоже, они просто извлекают их из набора данных.

Ответы [ 3 ]

3 голосов
/ 01 февраля 2012

Один из возможных вариантов - использовать recodeVar из пакета doBy

library(doBy)
x <- c(1, 2, 2, 4, 2, 3)
src = list(c(1, 2), c(3, 4))
tgt = list("A", "B")
recodeVar(x, src, tgt)

, что дает

> recodeVar(x, src, tgt)
[1] "A" "A" "A" "B" "A" "B"
> 

Или вы можете использовать пакет car:

library(car)
recode(x, "1:2='A'; 3:4='B'")
2 голосов
/ 01 февраля 2012
X <- c(1,2,2,4,2,3)
Y <- ifelse(X %in% 1:2, "A", "B")
## or
Y <- cut(X,breaks=c(0,2.5,5),labels=c("A","B"))

Последний подход создает фактор , а не символьный вектор;Вы можете использовать as.character, чтобы превратить его в символьный вектор, если хотите.

0 голосов
/ 01 февраля 2012

Другая альтернатива:

LETTERS[ceiling((1:4)/2)]
[1] "A" "A" "B" "B"

LETTERS[ceiling(X/2)]
[1] "A" "A" "A" "B" "A" "B"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...