だから私が立ち往生している問題の1つはそれです:
値{1,2,3,4}を取る変数Xがあります。したがって
X:1 2 2 4 2 3
私がやりたいのは、1と2をAに、3と4をBに変えることです。
私がこれを行う方法について考えられる提案はありますか?またはヒント?
最初はサブセットコマンドを使用することを考えていましたが、これらはデータセットからそれらを抽出するだけのようです。
考えられるオプションの1つは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'")
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
して文字ベクトルに戻すことができます。
別の選択肢:
LETTERS[ceiling((1:4)/2)]
[1] "A" "A" "B" "B"
LETTERS[ceiling(X/2)]
[1] "A" "A" "A" "B" "A" "B"
データフレームの場合、dplyr
パッケージ:
dataframe %>%
mutate (newvar = case_when(var %in% c(1, 2) ~ "A",
case_when(var %in% c(3, 4) ~ "B")) -> dataframe