0

だから私が立ち往生している問題の1つはそれです:

値{1,2,3,4}を取る変数Xがあります。したがって

X:1 2 2 4 2 3

私がやりたいのは、1と2をAに、3と4をBに変えることです。

私がこれを行う方法について考えられる提案はありますか?またはヒント?

最初はサブセットコマンドを使用することを考えていましたが、これらはデータセットからそれらを抽出するだけのようです。

4

4 に答える 4

3

考えられるオプションの1つはrecodeVardoByパッケージから使用することです。

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'")
于 2012-02-01T14:00:06.550 に答える
2
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して文字ベクトルに戻すことができます。

于 2012-02-01T13:55:04.413 に答える
0

別の選択肢:

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

LETTERS[ceiling(X/2)]
[1] "A" "A" "A" "B" "A" "B"
于 2012-02-01T17:10:33.797 に答える
0

データフレームの場合、dplyrパッケージ:

dataframe %>%
  mutate (newvar = case_when(var %in% c(1, 2) ~ "A",
                   case_when(var %in% c(3, 4) ~ "B")) -> dataframe
于 2020-03-21T04:18:02.467 に答える