2種類の情報(X#とY#)を含むデータフレームがあるとします。私は深く((各列は3つの1/3を含むカテゴリまたは列に分割されている)9つのカテゴリにグループにそれらを(X1及びY1以下)は、2つの列を使用して新しい列cat11に格納R - ハードコードされたスクリプトから関数への移動
df = data.frame(matrix(rnorm(600), nrow=100))
colnames(df) <- c("X1", "X2", "Y1", "Y2", "Y3", "Y4")
私があなたに示す貧弱なコードをお詫びしますが、私はRのちょうど初心者です)。私は今のに苦労しています何
df$tmpx <- cut2(df$X1, g=3)
levels(df$tmpx) <- c(1,2,3)
df$tmpy <- cut2(df$Y1, g=3)
levels(df$tmpy) <- c(1,2,3)
enum <- 1
for (x in sort(unique(df$tmpx)))
{
for (y in sort(unique(df$tmpy)))
{
print(enum)
df$cat11[df$tmpx == x & df$tmpy == y] <- enum
enum <- enum + 1
}
}
は、他の組み合わせの選択(; X2、Y1> cat21; X2、Y3> cat23例えばX1、Y4> cat14)のために、このコードを実行することです。
私は、機能だけでなく、礼儀正しく使うことを試みてきましたが、まだ成功していません。私は何かが明らかに欠けていると思う。
ご協力いただければ幸いです。
これは非常に洗練されたソリューションです。簡単な質問: 'fun'の中で、' df [、col1] 'の代わりに 'df [、col1]'を使って列をプログラム的に抽出するのに違いはありますか? – thepule
いいえ、どちらもうまくいくでしょう(後者はやや効率的です)。 – Roland
Rolandさん、ありがとうございました。私はまだ質問があります。なぜあなたは関数内に "ライブラリ(Hmisc)"を置いたのですか? – user3541159