MENU

R の attach の使い方

R の attach とはどんな関数か?

>>もう統計で悩むのは終わりにしませんか? 

↑期間・数量限定で無料プレゼント中!

目次

データフレームとは?

R の中で、データフレームとは、データの一つの塊を言っている。

それも、変数名がついて、何列かのデータのことだ。

エクセルで言えば、A、B、Cと列が並んでいるところに、

  • Aには、年齢
  • Bには、性別
  • Cには、居住地

などのデータが入っているとする。

データを取得した人が100人だったとする。

この100人の年齢、性別、居住地の一塊が、データフレームだ。

エクセルのファイルをタブ区切りにテキストに変換し、Rに読み込むとそこでデータフレームになる。

データフレームをattachする

attachとはくっつけるという意味だ。

データフレーム内の変数は、どのデータフレームのなんという変数かを指定しないと、どの変数か R がわからない。

attach()関数を使うと、そのあとはどのデータフレームかを指定しなくてよくなる。つまり、データフレームの中の変数を使いやすくする。

sleepを使って確認してみよう。

> str(sleep)
'data.frame':   20 obs. of  3 variables:
$ extra: num  0.7 -1.6 -0.2 -1.2 -0.1 3.4 3.7 0.8 0 2 ...
$ group: Factor w/ 2 levels "1","2": 1 1 1 1 1 1 1 1 1 1 ...
$ ID   : Factor w/ 10 levels "1","2","3","4",..: 1 2 3 4 5 6 7 8 9 10 ...

sleepのなかのgroupを集計してみようとすると、エラーメッセージが出る。

> table(group)
Error in table(group) : object 'group' not found

そこでsleepの中のgroupだよと教えてあげると、集計結果が出てくる。1も2も10人ずつという結果だ。

> table(sleep$group)
1  2
10 10

attach()を使ってみるとどうか。

先にattach()をしておくと、sleep$がいらなくなる。

> attach(sleep)
> table(group)
group
1  2
10 10

次に説明するdetach()でattachを終了するまで、attachの状態は続く。

>>もう統計で悩むのは終わりにしませんか? 

↑1万人以上の医療従事者が購読中

データフレームのattachをやめる

attachをやめるときは、detach()を使う。

detachは分離する、取りはずすの意味だ。

attachをしたデータフレームのattachを取りやめるときに使う。

detach(sleep)

detach()したあとは、前項のようにtable(group)だけ指令を出しても、
groupが存在しないと言われてしまう。

> detach(sleep)
> table(group)
Error in table(group) : object 'group' not found

sleep$でデータフレームを指定しなくてはならない状態に戻っている。

> table(sleep$group)
1  2
10 10

これはattach()とセットで大事な関数だ。解析が進むと、新しい変数を作りたくなる。

そしてデータフレーム内に格納したくなる。

その時に一度detachしてから再度attachしないと、新しい変数が認識されない。

なので、attach(), detach()はセットで覚えて、新しい変数を頻繁に作るなら、attach(), detach()を駆使する必要がある。

データフレームに作成した変数を追加する

解析を進めていくと、連続変数からカテゴリ変数を作成して、それを解析に使いたくなったりするのは、先ほども言った通り。

新しくカテゴリ変数を作成したときに、それをもとのデータフレームに追加する方法。

たとえば、年齢ageから10歳刻みのカテゴリ変数(年代変数)agecを作成したとする。

もとのデータフレームがdatであれば、以下のようにしてdatに追加できる。

dat$agec <-agec

ここでattachとの絡みでややこしいことが起こる。

新しい変数はデータフレーム内で作れない。

新しいagecはどのデータフレームにも所属していないので、agecはagecのみだ。

それをdatの中に入れるが、それはコピーで入ることになるので、もとのagecはそのままのこる。

データフレーム内では、dat$agecと認識されるが、このdatをattachするとどうなるか?

R はもとのagecと、attachしたdat内のagecの区別がつかなくなる。

まったく同じものだから問題はないが、警告が出るのでちょっと気持ち悪い。

まただんだん根詰めてやっていると、同じ名前で、切り方を変えた変数を作ってしまったりする。

10歳刻みを5歳刻みにしてみようとか。

そうすると本格的に混乱してくる。

そんなときは、データフレームに組み込む際に、名前を変えてRも自分も混乱を避けるという方法がとれる。

例えばagecをagec1とするなどだ。

dat$agec1 <- agec

新しい変数を組み込んだら、detachしてから、もう一度attachしなおす。

detach(dat)
attach(dat)

こうするとagec1がattachした状態として使えるようになる。

R で attach を使わない便利な方法

with()を使うとattacheも~~$も不要になる。

つまり、

with(sleep, table(group))

とするということ。

> with(sleep, table(group))
group
1  2
10 10

と出力される。

まとめ

R の attach() という関数を解説した。

データフレームを指定しなくてよくなるが、混乱することが多くなる。

with() などを使うようにして、attach() を使わないほうが無難である。

参考になれば。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

リサーチクエスチョン探し?データ分析?論文投稿?、、、で、もう悩まない!

第1章臨床研究ではなぜ統計が必要なのか?計画することの重要性
  • 推定ってどんなことをしているの?
  • 臨床研究を計画するってどういうこと?
  • どうにかして標本平均を母平均に近づけられないか?
第2章:研究目的をどれだけ明確にできるのかが重要
  • データさえあれば解析でどうにかなる、という考え方は間違い
  • 何を明らかにしたいのか? という研究目的が重要
  • 研究目的は4種類に分けられる
  • 統計専門家に相談する上でも研究目的とPICOを明確化しておく
第3章:p値で結果が左右される時代は終わりました
  • アメリカ統計協会(ASA)のp値に関する声明で指摘されていること
  • そうは言っても、本当に有意差がなくてもいいの…?
  • なぜ統計専門家はp値を重要視していないのか
  • 有意差がない時に「有意な傾向があった」といってもいい?
  • 統計を放置してしまうと非常にまずい
第4章:多くの人が統計を苦手にする理由
  • 残念ながら、セミナー受講だけで統計は使えません。
  • インプットだけで統計が使えない理由
  • どうやったら統計の判断力が鍛えられるか?
  • 統計は手段なので正解がないため、最適解を判断する力が必要
第5章:統計を使えるようになるために今日から何をすれば良いか?
  • 論文を読んで統計が使えるようになるための5ステップ
第6章:統計を学ぶために重要な環境
  • 統計の3つの力をバランスよく構築する環境

以下のボタンをクリックして、画面に出てくる指示に従って、必要事項を記入してください。

この記事を書いた人

統計 ER ブログ執筆者

元疫学研究者

統計解析が趣味

コメント

コメントする

目次