3

目的は、R で SPSS 再コード化手順をシミュレートすることです。copy-command は翻訳が困難です。

SPSSには、次のようなコードがあります

RECODE A (1,2 = 1) (3,4 = copy) (8 thru hi = 3) (else = 1) into B.

次のように見える A に適用されます

A <- c(1,2,3,4,5,NA,7,8,9)

次の(SPSS)結果が得られます。

A = 1,1,3,4,1,1,1,3,3

R では、同様のコードは次のようになります。

B <- Recode(A, recodes = ("c(1,2) = 1; c(3,4) = c(3,4); c(8,9) = 3; else = 1"), as.numeric.result = TRUE)

A = 1,1,3,4,1,1,1,3,3

一般的な問題は、SPSS-copy ステートメントで値を示すことです。ここでは c(3,4) = c(3,4) と書きました - もちろん、これはうまくいきません。

SPSS では、R と同じ出力を返すものを else = copy と言う可能性も存在します。

SPSSと同じように機能するR関数を持っている人はいますか?

4

4 に答える 4

2

機能を使用しlevelsます。組み込みのデータセットを使用した例を次に示します。

InsectSprays
levels(InsectSprays$spray)<-list(new1=c("A","C"),YEPS=c("B","D","E"),LASTLY="F") 
InsectSprays

これを使用してデータセットをリセットします。

InsectSprays <- datasets::InsectSprays
于 2013-02-28T13:23:09.267 に答える
2

ifelseとを組み合わせてcar::recode、必要な結果を得ることができます。

library(car)
A <- c(1,2,3,4,5,NA,7,8,9)
B <- ifelse(A %in% c(3,4), A, recode(A, "c(1,2) = 1; 8:hi = 3; else = 1"))
cbind(A, B)
于 2013-03-03T08:13:12.030 に答える
1

carパッケージをチェックしてみるといいかもしれません。残念ながら、利用可能な「コピー」機能はありません。

library(car)
?recode
A <- c(1,2,3,4,5,NA,7,8,9)
B <- recode(A, "c(1,2) = 1; 3 = 3; 4 = 4; 8:hi = 3; else = 1")
B

## SPSS result: A = 1,1,3,4,1,1,1,3,3
## > B
## [1] 1 1 3 4 1 1 1 3 3
## > 
于 2013-02-28T16:52:32.930 に答える