この問題にどのように接近するかを正確に把握しておらず、次のコードについては、私は以下の結果を望んでいます。結果は、以下の基準に基づいている:同じ日以内[R]で複数の基準を持つ新しい列を定義する方法(ddply内のループの場合)
:
idEffectA:
を常に0 ID「以外のID A」行の
1行の有する任意の行のIDが存在する場合「非のid A」行のその日付
0のための特別な1すべてのid Aの行は、その日
sizeEffect10のために特別に0を持っている場合:非」の場合は常に0サイズ10
1行の
サイズが10インチの行があれば10インチの行があり、その中には特別なものが1つあります日付
すべてのサイズ10がその日付で特別な0を持つ場合、「非サイズ10」行の場合は0
同様に、他の変数の場合も同様です。列の名前を生成することもできれば、それぞれを手動で定義する必要はなく、非常に便利です。また、実際のデータセットでは、サイズとIDにはさまざまなカテゴリがありますので、それらを関数に入力するのを避けるのが最善ですが、唯一の可能性がある場合は、マージで使用される集計関数をデータに使用できます定義された関数で設定します(その他の提案は?)。結果の列を元のデータセットにバインドしたいと思います。
実際に私が列で欲しいものを定義するのが難しいので、ご不明な点がありましたら教えてください。私は索引付けと一緒にplyrパッケージを使用しようとしましたが、それほど遠くには達していません。ありがとう!最初の部分については、私はこのようなものは、ループ内で働くことができると思い
:
i=0
ifelse(id==A & max(special[id=="A" & date==min(date)+i], 1, 0)
i=i+7
しかし、その後私は本当にわからないんだけど...ここ
original.data
label date special size id
1 1/11/2012 0 10 A
2 1/11/2012 1 20 A
3 1/11/2012 0 10 B
4 1/11/2012 0 30 C
5 1/11/2012 0 10 C
1 1/18/2012 0 10 A
2 1/18/2012 0 20 A
3 1/18/2012 0 10 B
4 1/18/2012 1 30 C
5 1/18/2012 1 10 C
1 1/25/2012 1 10 A
2 1/25/2012 1 20 A
3 1/25/2012 0 10 B
4 1/25/2012 1 30 C
5 1/25/2012 1 10 C
1 2/1/2012 0 10 A
2 2/1/2012 1 20 A
3 2/1/2012 1 10 B
4 2/1/2012 0 30 C
5 2/1/2012 0 10 C
1 2/8/2012 0 10 A
2 2/8/2012 0 20 A
3 2/8/2012 0 10 B
4 2/8/2012 1 30 C
5 2/8/2012 0 10 C
1 2/15/2012 1 10 A
2 2/15/2012 1 20 A
3 2/15/2012 0 10 B
4 2/15/2012 1 30 C
5 2/15/2012 0 10 C
があります私が探しています結果:
results
idEffectA sizeEffect10 idEffectB sizeEffect20 idEffectC sizeEffect30
0 0 0 1 0 0
0 0 0 0 0 0
1 0 0 1 0 0
1 0 0 1 0 0
1 0 0 1 0 0
0 0 0 0 1 1
0 1 0 0 1 1
0 0 0 0 1 1
0 1 0 0 0 0
0 0 0 0 0 1
0 0 0 1 1 1
0 1 0 0 1 1
1 0 0 1 1 1
1 1 0 1 0 0
1 0 0 1 0 1
0 0 1 1 0 0
0 1 1 0 0 0
1 0 0 1 0 0
1 1 1 1 0 0
1 0 1 1 0 0
0 0 0 0 1 1
0 0 0 0 1 1
0 0 0 0 1 1
0 0 0 0 0 0
0 0 0 0 0 1
0 0 0 1 1 1
0 1 0 0 1 1
1 0 0 1 1 1
1 1 0 1 0 0
1 0 0 1 0 1
[OK]を、ここで私が持っているものに始まりです。
年代を作成した私は、このコードを実行することを期待してx <- rep(0, length(id))
i=min(date)
n=1
id.level = 1
for(i in min(date):max(date)){
for(id.level in 1:length(levels(id))){
for(n in 1:length(id)){
x[n] <- ifelse(max(special[id==id[id.level] & date==i])==1, 0, 1)
n=n+1
}
y <- paste("idEffect",id[id.level])
id.level = id.level + 1
colnames(x)[length(colnames(x))] <- y
}
i=i+7
}
すべてのidの私は、元の記事に書いたような:
idEffectA:常に
0 ID
と行の個別のIDごとに列を作成します。しかし、私は他の条件やそれをどのように適合させるべきかわからない。ネストされたifelseステートメントで追加する必要がありますか?どんな助けでも大歓迎です。私は、Rでの索引付けの作業に慣れているので、ifelseやfor文についての知識はあいまいです。ありがとう。
@BrianDiggsなぜ私はコードを編集してforループの変数の初期化を取り除くのか混乱しています。説明してください。 – user1228982
それは事故だった。私はそのコードを外すことを意味しませんでした。私は、既存のコードを再フォーマット/インデントすることを意味しました。書式設定されたコードを貼り付けたときにあまりにも多くを選択しました。私はそれを修正しました。エラーを申し訳ありません。 –
今後、自分のコードを入力するためのより良い方法がありますか? – user1228982