0

データフレームには、他の変数の中に 167 個のダミー変数があります。予測用の新しいデータを作成するために、最初のダミー変数の値を 1 に変更し、他のすべての変数の値をゼロに置き換えたいと考えています。私のダミー変数は、district_code2、district_code3、district_code4 などと呼ばれます。したがって、district_code2 を修正して値 1 を取得し、その他すべてを値 0 に修正したいと考えています。

factor を使用してこれらのダミー変数を作成し、model.matrix を使用してデータに追加しました。

 dummies = data.frame(model.matrix(~district_code, data=data_wht_81_09))
 #to get rid of the intercept
 dummies1<-dummies[,-1]

回帰を実行した後、予測ですべてのダミーの係数を考慮したくないため、データにダミーが必要です。他のすべてを平均に保持する1つの変数に関して、適合値をプロットしたいと思います。地区ダミーの場合、これはすべての当てはめ値に定数を追加することを意味します。したがって、他のすべてのダミー変数の値を 0 にしたいと考えています。これを行うためのより効率的な方法があるかもしれません。以下に、オブジェクト ダミーのサンプルを示します。

 dput(head(dummies1,4))
 structure(list(district_code2 = c(0, 0, 0, 0), district_code3 = c(0, 
 0, 0, 0), district_code4 = c(0, 0, 0, 0), district_code5 = c(0, 
 0, 0, 0), district_code6 = c(0, 0, 0, 0), district_code7 = c(0,0, 0, 0), 

最初の 6 つの変数のみを表示しています。これどうやってするの?よろしくお願いします。

4

1 に答える 1

1

自分でダミー変数を操作する必要はめったにありません (R は、因子を使用するときに舞台裏で行います) が、絶対に必要な場合は、名前が で始まる列を単純に識別しdiscrict_code、それらの値を変更することができます: 他の列は次のようになります。そのまま放置。

d <- data.frame( 
  district_code2 = c(0, 0, 0, 0), 
  district_code3 = c(0, 0, 0, 0), 
  district_code4 = c(0, 0, 0, 0), 
  district_code5 = c(0, 0, 0, 0), 
  district_code6 = c(0, 0, 0, 0), 
  district_code7 = c(0,0, 0, 0), 
  x = 1:4
)
library(stringr)
d[,str_detect(names(d), "^district_code[0-9]+")] <- 0
d[,1] <- 1
d
于 2013-04-16T17:15:07.360 に答える