正規表現の応用&エクセルを使ったデータ解析

第5回授業の獲得目標: [worried]

グループワーク:あなたにとって研究者って何? [smile]

この授業の前が体育であることもあり、授業の最初から全員がコンピュータの操作をすぐに始めるのは、なかなか難しい。そこで、授業の始めには、たいてい、グループディスカッションを持ってくるようにしている。
今日の最初の演習は、自分にとって研究者というのはどういうものかという意見をグループで話し合ってみること。まず、5分ぐらいで(遅れてきた人は、その間にログインしておくこと)
 自分が「研究者」とはどういうものだと思っているか?
 「研究者」になるためには、今からどんな準備をすればよいか?
を話し合ってみよう。また、ディスカッションの後、 授業のmoodleにアクセスして、「演習1」の質問に答えてほしい。

研究者を目指す人のための長期計画

例年、1年生の中には、将来、研究者になることを志望している人が多い。また、学部生から修士にかけて生物を学ぶ間に、新たに研究者を目指す学生もでてくるだろう。そこで、一つの事例として、研究者になるために知っておくと得をするかもしれない、いくつかの事例を紹介しておこう。
題して、学部生から研究者を目指す学生が、今から知っておきたいこと

事項\年2014201520162017201820192020 ... 2023..
学年学部1年学部2年学部3年学部4年修士1年修士2年博士1年...博士4年
主な活動授業授業授業研究・院入試・卒論研究研究・修論研究・論文...研究...
目標自分次第自分次第自分次第院入試で上位
奨学金に影響)
投稿論文を
目指した卒研
投稿論文発表
(投稿規定・論文書式)
学振DC申請(5月)論文作成、学振PD申請...研究職応募..
サポート各種留学制度各種留学制度各種留学制度各種留学制度奨学金返還免除各種助成学振DC1奨学金
各種助成...
学振PD申請・
海外学振申請、
助成金, 、奨学金返還免除.
Word・Excelの利用実験・レポート実験・レポート実験・レポート研究・卒論研究・論文・申請書研究・学振申請書・修論研究・論文・申請書・報告書...研究・論文・
申請書...


もしも、修士で第一種奨学金をもらえてそれが免除され、さらに、学振DC1ももらえたら、修士課程と博士課程での収入は、

事項\年201820192020202120222023
学年修士1年修士2年博士1年博士2年博士3年博士4年
奨学金+学振DC11,056,0001,056,0002,400,0002,400,0002,400,0002,400,000


その他にも、学内、学内のいろんな制度で、海外学会に参加したり、留学したりできる(トビタテ留学!の募集要項は、共有しているDropBoxフォルダに入れておいた)。
学振の話しや、申請書の話しはまた次回以降にするが、皆さんに知っておいて欲しい大事なことは、

発展的な正規表現:後方参照への挑戦 [smile]

まずは、前回のおさらいから。

授業のmoodleページにアクセスして、演習2をやろう。

後方参照とは?

今日は1つ上のレベルの正規表現「後方参照」にチャレンジしてみよう。
K2Editorのヘルプで後方参照に関する項目を見てみると、次のように書かれている。

後方参照
正規表現の中で()を使ってグループ化された部分にマッチ文字列は、 ¥1,¥2などの表現で、
再度正規表現の中に埋め込むことが可能です。 

ちょっと分かりにくいかも知れないが、半角の

()

の中で指定したパターンにマッチした文字列を、

¥1

などという記号を使うことで、呼び出すことができるということだ。
まず簡単な例で操作をしてみよう

テキストデータ: A9JA49K6  に対して、
Aの次の1文字と、そのAの並び順を入れ替えたい。


K2Editorで実際に試してみると:

テキストデータ  A9JA49K6
・Aに続く1文字とAの順序入れ替え
  検索文字列 (A)(.)
  置換文字列 ¥2¥1

書籍リストを出版年順に並び替える

では、もう少し具体的な例をつかって、段階的に説明してみよう。
まず、次のような書籍のリストがある。このリストを、K2Editorで開いてみよう。file書籍リスト.txt

まずは、これまでに習った正規表現で、どこまで解決できるか考えてみる

このリストには、出版年が含まれているにも関わらず、出版年の順番に並んでない。どうすれば、出版年で並び替えられるだろうか?
リストをよく見てみると

タイトル・著者,出版年,ページ・価格

という順番で並んでいる。ここで、

出版年だけを切り出して、
出版年 <タブ> タイトル・著者,出版年,ページ・価格

というリストを作り、エクセルにペーストして

出版年タイトル・著者,出版年,ページ・価格

という表を作り、出版年で並び替えれば良いということまでは、想像できるだろう。
では、出版年だけを切り出すにはどうすればいいだろうか? まず、これまでにならった正規表現で表現できるところだけを書いてみると、

練習:日付データの形式変更

下に友達の誕生日リストが月、日、年の順で書かれている。

April 29, 1984
March 20, 1987
September 23, 1980	
December 23, 1982
February 11, 1984
January 1, 1999
May 3, 1988
May 4, 1993
May 5, 1987
November 23, 1985
November 3, 1994

発展演習: DNAの塩基配列データの整形処理

添付されているファイルfilesequence_Pdic.fastaには、Pedicularisという植物のDNA塩基配列データがFASTA形式で入っている。GenBankからダウンロードしたままの形式なので、

>gi|310769146|gb|HM596759.1| Pedicularis procera tRNA-Leu (trnL) gene
 (GenBankID, データベース、Accession No.、種名、遺伝子の種類...)

が、それぞれのデータを示すラベル情報として入っている。これを、よりシンプルに、

>種名の省略形_Accession No.
という形に整形したい。上の例だと、
>P_procera_HM596759

に置換したい。どのようにすれば良いか、考えてみよう。
この操作は、実際にDNAデータベースのデータを使って、系統解析を行うときに、知っていると大変役に立つ。

Excel(エクセル)の操作の基本:表計算 [smile]

今日から2回ほど、表計算ソフトの代表ともいえるExcel(エクセル)の操作を習得する。表計算ソフトは、コンピュータに作らせた表の上に数値を記入して計算させるもの。手計算では、表の中の一つの数値を変更したら他の数値も全てもう一度計算し直さなければならない場合も、表計算ソフトを使うと、他の数値は自動的に再計算される。このアイデアは、ハーバード大学の学生であったDaniel Bricklinが1979年が思いつき、VISICALCというソフトウェアとして実現したものだ。その後、表計算ソフトは、DOS/V機(日本ではPC-98)におけるLOTUS-1-2-3やWindowsにおけるMicrosoft Excelとして発展してきた。表計算ソフトは、ハードウェアの普及を促進したということで、パーソナルコンピュータにおけるキラーソフト(キラーアプリ)と呼ばれている。

Microsoft Excelの各部の名称

excelmeisho.gif

値・数式の入力と計算

  1. セルを一つクリックして、 =1+2 という式を入力 sushiki.gif

セルの参照

  1. セルA1に5, セルB1に8を入力
  2. セルC1をクリックして半角=を入力し、セルA1、せるB1をクリック
    • (あるいは、セルC1をクリックして、=A1+B1と入力しても同じ)

      sansho.gif

      5	8

式(参照)のコピー・ペースト

  1. 式を入力したセル(例ではC1)をクリックしてコピー(ctrl+c):選択されたセルが波線で囲まれる
  2. 同じ法則(例では「左側の2つのセルの値を足すこと」)を適用したいセルをマウスドラッグで選択
  3. ペースト(ctrl+v)すると、選択範囲に全て式がコピーされる

    sanshocopy.gif

    5	8
    1	2
    3	4
    5	6
    7	8

絶対参照

  1. 下の例のようにエクセルに果物の個数を入力して合計を求める
    • soutaierr1.gif
  2. りんごの個数の全体に対する比率を =B2/B5 で計算。書式をパーセントにする(あるいは、パーセントの計算式を入れる。関数を使っても良い)。
  3. りんごの比率の入ったセルをコピーして、他の項目の比率のセルにペーストしてもうまく行かない
    • soutaierr2.gif
  4. これは、通常のコピー・ペーストでは、セルが相対的な位置関係で参照されるため
  5. リンゴの比率を計算するときに、分母のセル指定を $B$6 と$記号をつけて参照することで、絶対参照できる
    • zettai1.gif → zettai2.gif
      	個数	比率
      りんご	10	
      みかん	15	
      ばなな	25	
      合計	50	

関数の利用

  1. 合計を入力したいセルをクリック(例ではC6)
  2. =sum( と入力し、マウスで合計したい数値の範囲をドラッグし、最後に ) を入力してリターン

正規表現検索・置換とエクセルの操作に習熟 [smile]

これまで何回か出てきた話だが、

テキストデータを"タブ"で区切れば、エクセルの表に簡単に移せる

ということだけは、覚えていてくれていると思う。今日もこの技をつかって、テキストデータをエクセルに移し、様々な操作をしてみよう。

演習4: ウェブに貼ってある解析用データをエクセルに移動して、今日やる集計の準備

これからの学生生活で、皆さんはきっといろんなデータを集計する機会に出会うはず。例えば、名簿、部費の管理、アンケート調査の結果、そしてもちろん、実験データ。こういうデータは必ずしも、いつも最初からエクセルに入力されている訳ではない。たとえば、メールで受信した解析データをエクセルで集計したい場合もあるはず。そんなときにもやっぱり、

データの区切りをタブに置換して、エクセルで集計!

では、下の囲みの中のようなデータを解析してみよう。これは、千葉大の西千葉キャンパスの草地に3つの区画をつくり、それぞれの区画での植物の出現個体数をまとめたものだ。

区画No.1
カラスノエンドウ   5
セイヨウタンポポ   2
オランダミミナグサ 10
オオバコ 1
スズメノテッポウ  8
キュウリグサ  5

区画No.2
キュウリグサ  1
スズメノテッポウ  3
オランダミミナグサ  1

区画No.3
カラスノエンドウ  10
オランダミミナグサ 12
ヘラオオバコ  5
ヤセウツボ  3
キュウリグサ  8
スズメノテッポウ  5

このデータでは、区画ごとに、種名と出現個体数が書かれている。これをエクセルで

区画No.  種名  出現個体数日付(<日付については後ほど手入力>)
1       オオバコ12010/05/20
. . .. . . . . . .. . . . .. . . . .

という形で集計したい。

手順を考えて、自分でやってみよう。
この操作さえ覚えれば、調査データをその場で携帯メールに打ち込み、集計する人に送信しちゃうなんていうことができるので、とても便利。

演習1: 作業手順 ・K2Editorによる正規表現を用いた一括検索・置換

  1. データをK2Editorにコピー
    データをじーっとみると、
    種名<スペース>数字
    という並びが見えてくる。どうやらスペースには、半角と全角のスペースが混在しているようだ
  2. K2Editorで正規表現検索・置換で全置換
    検索文字列: [  ]+(注:[]の間に半角と全角のスペース1文字ずつ入れる。これでスペースの1文字以上の繰り返しを意味する)
    置換文字列:¥t(注:半角¥マークと半角t:タブのこと)
  3. 置換できたもの全てをコピーしてエクセルの新しいシートに貼り付け

自分で考えてここまで出来ただろうか?
#05_1.gif

演習1: 作業手順 ・エクセルによるデータ整形

これでテキストファイルからエクセルへのデータの移動はできたが、まだ、

区画No.	種名	個体数	日付(<日付については後ほど手入力>)

という形にはなっていない。

集計作業 では、データ行の上には ''見出し行' 'を作り、それぞれの列の 見出し を書いておく

ことが必要だ。そこで、エクセルの上で、行の挿入コピー・ペースト等を使って、下の様な形に整形する。(操作方法は前方スクリーンで示す。ほとんど全て、マウスの右クリックでメニューを表示させてできる。)。

  1. 見出し作成: ワークシートの最左端の"1"という四角をクリックして、1行選択。メニューバーの「挿入/行」 で最上部に1行挿入
  2. それぞれのセルに、見出しを入力(上の囲みの中をコピー・ペーストしてもよい)
    #05_2.gif

ついでに、上の図のように、日付も入力しておこう。1つ入力したら、あとは、コピー・ペースト。

これで集計の準備はできた。

サンプルデータの並び替え [smile]

データの並び替え(ソートともいう)は、大量データを扱う上で、絶対に知っておかなければならない方法なので、必ず習得して欲しい。

ぱっと見で分からなくても、並べ替えたり、集計したりすると、何かが見えてくる

では、サンプルデータを見てみよう。ここで、

全部のデータを合わせたとき、どの種の個体数が最も多いか

を知りたいと思ったのだが、この表では、同じ種がばらばらに出てくるのでわかりにくい。そこで、「種名」で並べ替えてみる

  1. 全てを選択し(Aと1の間のボタンをクリック)
    fig7.JPG
  2. 右端の「並べ替えとフィルター」→「ユーザー設定の並び替え」
    fig1.JPG
    • 並べ替えウィンドウの中、「範囲の先頭行」で「タイトル行」を指定し(ラジオボタンをクリック)
    • 優先されるキーで「種名」、昇り順
      fig2.JPG
  3. 「OK」をクリックすると、種名順に並びかわる。
    #05_3.gif

これで、同じ種名のものが近くにまとまったので、全部のデータを合わせたとき、どの種の個体数が最も多いかかがわかる。

並び替えでは2つの並べ替えキーを設定することもできる。先の並び替えの2番目のキーに「個体数」を指定して並べ替えてみよう。

並び替えたデータの集計 [smile]

上の並び替えで、どうやらオランダミミナグサの個体数がもっとも多いとわかるのだが、実際に何個体現れたのかを知ろうと思うと、いちいち計算しなければならくて面倒。そういうときにエクセルの集計機能を使って、自動的に計算させる。

    重要事項集計する前にグループの基準になる項目で必ず並べ替えておくこと

  1. 全てを選択し(左上角の<>をクリック)
  2. 「データ」リボンから、「小計」
    fig3.JPG
  3. 集計したいのは「種名」の「個体数」の「合計」なので、以下の3項目をチェック。(例では「現在の集計行と置き換える」、「集計行をデータの下に挿入する」をチェックしてあるが、この例ではしてなくても良い)
    グループの基準: 種名
    集計の方法: 合計
    集計するフィールド:個体数
    fig4.JPG
  4. 「OK」をクリックすると集計データが表示される。
  5. 集計見出しの2をクリックすれば、集計結果だけが表示される。
    #05_7.gif
    これで、「オランダミミナグサが23個体で最も多い」と分かった。

    万一失敗しても、集計データはすぐに消せる。

    集計データを削除するには、上の集計ウィンドウで「削除」をクリック。
    元データは削除されないので心配無用。