-3

Rでは、ベクトル、つまり1次元行列で、値3のコンポーネントを値1に、値4のコンポーネントを値2に変更したいと思います。どうすればよいですか?ありがとう!

4

1 に答える 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::revaluemapvalues具体的 にfactorまたはcharacter変数のラッパーです。

于 2013-03-01T01:27:01.550 に答える