2

次のようなデータセットがあります。Rを使用してこのデータを処理しています。最初の 3 つの列 (年、ID、および変数) は生データの一部を形成します。次のように新しい変数 ans を作成する必要があります

var=1 の場合、毎年 (var=1 の場合)、var=1 のインスタンスが記録された対応するすべての ID に対して値 1 を取る新しいダミー ans を作成する必要があります。予想される出力 (ans) を含むサンプル データを以下に示します。

 year     id     var     ans
 2010      1      1       1
 2010      2      0       0
 2010      1      0       1
 2010      1      0       1
 2011      2      1       1
 2011      2      0       1
 2011      1      0       0
 2011      1      0       0

これを達成する方法についての助けは大歓迎です。

ありがとうございます

4

1 に答える 1

1

およびとともに使用ddplyします。transformany

DF <- read.table(text=" year     id     var     ans
 2010      1      1       1
 2010      2      0       0
 2010      1      0       1
 2010      1      0       1
 2011      2      1       1
 2011      2      0       1
 2011      1      0       0
 2011      1      0       0", header=TRUE)

library(plyr)
ddply(DF,.(year,id),transform, ans2 = as.numeric(any(var==1)))

#   year id var ans ans2
# 1 2010  1   1   1    1
# 2 2010  1   0   1    1
# 3 2010  1   0   1    1
# 4 2010  2   0   0    0
# 5 2011  1   0   0    0
# 6 2011  1   0   0    0
# 7 2011  2   1   1    1
# 8 2011  2   0   1    1

ddply設計による再注文に注意してください。

于 2013-07-14T13:54:15.053 に答える