0

だから...多くのカテゴリを持つ変数を持つ大きなデータセットがあります。これらのカテゴリの一部を 1 つにグループ化する新しい変数を作成したいと考えています。

条件付きステートメントを使用してそれを行うこともできますが、カテゴリの量を考えると、一度に 1 行ずつ移動するには永遠に時間がかかります。また、元の変数は数値ですが、値自体はランダムであるため、論理ステートメントや範囲ステートメントを使用できません。

多くの特定の値に基づいてこの条件変数を作成するにはどうすればよいですか?

次のことを試しましたが、成功しませんでした。以下は、1 つにグループ化したいさまざまなカテゴリの例です。

classes <- c(549,162,210,222,44,96,62,208,525,202,149,442,427,
      564,423,106,422,546,205,560,127,536,34,261,568,
      366,524,401,548,95,156,8,528, 430,527,556,203,554,523,
      501,530,55,252,585,19,540,71,204,502,504, 196,436,48,
      102,526,201,521,23,558,552,118,416,117,216,510,494,
      516,544,518)

これは私にはかなり直感的に思えましたが、うまくいきません。

df$chem<- cbind(ifelse(df$class == classes ,1,0))

言うまでもなく、私は初心者であり、これはおそらくそれほど難しいことではありませんが、この特定の問題の解決策を探していましたが、見つけられないようです. 私は何が欠けていますか?ありがとう!

4

1 に答える 1

5

あなたが探しているの%in%==

例えば

df$chem <- cbind(ifelse(df$class %in% classes ,1,0))

または論理から数値への変換を使用する

df$chem <-  as.numeric(df$class %in% classes)

すべてのカテゴリに個別のダミー変数が必要な場合は、パッケージ内の関数をdf$class使用できます(推奨パッケージとして出荷されます)。class.indnnet

library(nnet)

class_ind <- class.ind(df$class)
# add if you want to combine with the original
df_ind <- do.call(cbind, list(df, class.ind(df$class))
于 2012-09-04T02:36:08.323 に答える