2

次のようなサンプルデータフレーム" z"があります。

deaths  sex race    smokes  pyears
10  Female  White   0   1410
14  Male    White   1   1974
14  Female  Black   0   1974
16  Male    Black   1   2256
17  Male    Black   0   2397
18  Female  NA  1   2538
19  NA  Black   0   2679
20  Female  White   1   2820
20  Female  Black   0   2820
21  Male    Black   1   2961

group人種と性別の変数を組み合わせた新しい変数""を作成するのが好きです。この新しい変数は、daaframe「z」内の観測値のグループを一意に識別します。期待される出力は

 group
    1
    2
    3
    4
    4
    6
    5
    1
    3
    4

これをRでどのようにコーディングするのか疑問に思っていますか?

4

2 に答える 2

2

これは私が考えていたようなものです:

dat <- read.table(text = "deaths  sex race    smokes  pyears
10  Female  White   0   1410
14  Male    White   1   1974
14  Female  Black   0   1974
16  Male    Black   1   2256
17  Male    Black   0   2397
18  Female  NA  1   2538
19  NA  Black   0   2679
20  Female  White   1   2820
20  Female  Black   0   2820
21  Male    Black   1   2961",header = TRUE,sep = "")

dat$sex <- factor(dat$sex,exclude = NULL)
dat$race <- factor(dat$race,exclude = NULL)

with(dat,interaction(sex,race))

 [1] Female.White Male.White   Female.Black Male.Black   Male.Black   Female.NA    NA.Black     Female.White Female.Black
[10] Male.Black  
Levels: Female.Black Male.Black NA.Black Female.White Male.White NA.White Female.NA Male.NA NA.NA

NAを削除するのではなく、含める必要があるようです。したがって、明示的なfactor呼び出しです。明らかに、結果の係数は、を使用して整数に変換できますがas.integer、Rはデータフレームでの表示方法ではなくアルファベット順に並べ替えるため、実際の数値は指定した順序にはならない可能性があります。

于 2013-02-01T22:58:01.287 に答える
1

あなたが使用することができます:

dat <- read.table(text="deaths  sex race    smokes  pyears
10  Female  White   0   1410
14  Male    White   1   1974
14  Female  Black   0   1974
16  Male    Black   1   2256
17  Male    Black   0   2397
18  Female  NA  1   2538
19  NA  Black   0   2679
20  Female  White   1   2820
20  Female  Black   0   2820
21  Male    Black   1   2961", header=TRUE)

library(qdap)
factor(paste2(dat[, 2:3], ,FALSE))

#for numeric:
as.numeric(factor(paste2(dat[, 2:3], ,FALSE)))

しかし、ジョランが指摘したように、あなたの数値の期待は、Rがそれらを作る方法と同じではありません。あなたが望むようにレベルを注文するためにあなたはlevels内部を使わなければならないでしょう。factor

于 2013-02-01T23:08:11.533 に答える