Rでは、ベクトル、つまり1次元行列で、値3のコンポーネントを値1に、値4のコンポーネントを値2に変更したいと思います。どうすればよいですか?ありがとう!
質問する
15427 次
1 に答える
17
慣用的なrの方法は、次[<-
の形式で
を使用することです。x[index] <- result
整数/因子または文字変数を扱っている場合は==
、インデックス作成に確実に機能します。
x <- rep(1:5,3)
x[x==3] <- 1
x[x==4] <- 2
x
## [1] 1 2 1 2 5 1 2 1 2 5 1 2 1 2 5
にはcar
便利な関数recode
(のラッパー[<-
)があり、1回の呼び出しですべての再コーディングを組み合わせることができます。
例えば
library(car)
x <- rep(1:5,3)
xr <- recode(x, '3=1; 4=2')
x
## [1] 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5
xr
## [1] 1 2 1 2 5 1 2 1 2 5 1 2 1 2 5
パッケージmapvalues
から言及してくれた@joranに感謝します。plyr
[<-
x <- rep(1:5,3)
mapvalues(x, from = c(3,1), to = c(1,2))
plyr::revalue
mapvalues
具体的 にfactor
またはcharacter
変数のラッパーです。
于 2013-03-01T01:27:01.550 に答える