たつをの ChangeLog : 2015-01-20

自分用プログラミングメモです。

実験用のPerlスクリプトを作るときに、使うフィールド(カラム)を指定する機能を入れたりするが、その部分だけ取り出して雛形化。コマンドラインオプションとの組み合わせ。

テストファイル


適当。TSV。
colsel-test.txt
身長	性別	自宅	あれ	これ	それ
176	1	0	1	0	1
170	0	0	0	1	1
164	0	1	1	1	0

cut式フィールド指定


フィールドをカンマ区切りの数字リストで指定する。"1" や "1,2" や "1,3,5,6" など。

"man cut" より:
-f list
        The list specifies fields, separated in the input by the field
        delimiter character (see the -d option.)  Output fields are sepa-
        rated by a single occurrence of the field delimiter character.

■サンプルコード(colsel-f.pl):
#!/usr/bin/env perl
use strict;
use warnings;
use Getopt::Long;

my $fields = "";
GetOptions(
    "fields=s" => \$fields, # select only these fields (origin 1)
    );
my @flds = map {$_ - 1} split(/,/, $fields);

while (<>) {
    chomp;
    my @cols = $fields ? (split/\t/)[@flds] : split/\t/;
    ### do something
    print "@cols\n";
}

■実行例:
% ./colsel-f.pl colsel-test.txt
身長 性別 自宅 あれ これ それ
176 1 0 1 0 1
170 0 0 0 1 1
164 0 1 1 1 0
% ./colsel-f.pl -f 1 colsel-test.txt
身長
176
170
164
% ./colsel-f.pl -f 6 colsel-test.txt
それ
1
1
0
% ./colsel-f.pl -f 1,3,5 colsel-test.txt
身長 自宅 これ
176 0 0
170 0 1
164 1 1

sort式フィールド指定


カンマ区切りの数字リスト(1つか2つ)でフィールド範囲を指定する。"1" や "2" だと1つ。"1,3" だと 1 から 3 までのフィールド(3つ)。"2,6" だと 2 から 6 までのフィールド(5つ)。

"man sort" より:
-k, --key=POS1[,POS2]
       start a key at POS1, end it at POS2 (origin 1)

■サンプルコード(colsel-k.pl):
#!/usr/bin/env perl
use strict;
use warnings;
use Getopt::Long;

my $key_at = "";
GetOptions(
    "key=s" => \$key_at, # start a key at POS1, end it at POS2 (origin 1)
    );
my ($pos1, $pos2) = map {$_ - 1} split(/,/, $key_at, 2);

while (<>) {
    chomp;
    my @cols = $key_at ? (split/\t/)[$pos1..($pos2||$pos1)] : split/\t/;
    ### do something
    print "@cols\n";
}

■実行例:
% ./colsel-k.pl colsel-test.txt
身長 性別 自宅 あれ これ それ
176 1 0 1 0 1
170 0 0 0 1 1
164 0 1 1 1 0
% ./colsel-k.pl -k 1 colsel-test.txt
身長
176
170
164
% ./colsel-k.pl -k 4 colsel-test.txt
あれ
1
0
1
% ./colsel-k.pl -k 1,3 colsel-test.txt
身長 性別 自宅
176 1 0
170 0 0
164 0 1
% ./colsel-k.pl -k 2,6 colsel-test.txt
性別 自宅 あれ これ それ
1 0 1 0 1
0 0 0 1 1
0 1 1 1 0

議論


cut で必要なフィールドだけ取り出すことを前提に(パイプで受ける)プログラムを作ればいいじゃん、という意見もあり。まったくもってその通りで、それで済むようなタスクはそれで良いかと。
この記事に言及しているこのブログ内の記事

科学者なら必読!
そうじゃなくても統計だ検定だと言う人は必読!
といった感じのガイドブック。

ダメな統計学
〔統計に関する〕誤りはしばしば起きるだろう。なぜならば、どういうわけか、科学の学部課程や医学校で、統計と実験デザインに関する授業を必修とするものはほとんどないからだ。そして、統計学の入門授業では、検定力と多重推論についての問題をとばしてしまうこともある。現代の科学の営み においてデータと統計分析が最も重要な役割を果たしているにもかかわらず、こうした状況が容認されている。薬の処方の経験がない医者を容認することはないはずだ。だとすれば、なぜ統計の訓練を受けていない科学者を容認するのだろうか。科学者には統計に関する正式な訓練とアドバイスが必要だ。
--「終わりに」より

「統計的に大丈夫」と言われても、都合のいい結果だけ選んで他は隠すとか、まあいろいろ悪い手段はあるわけで、そういうことを丁寧に説明してくれています。

なお、本書はある程度の統計学の知識が必要です(基本の教科書くらいの)。

ウェブページとしても読めるし、PDFで配布されているので、そちらでも。私はPDFで読みました。

- 『ダメな統計学』冊子PDFの公開|Colorless Green Ideas
http://id.fnshr.info/2014/12/28/stats-done-wrong-ja-pdf/

2015年1月20日のヲハニュースをお届けします。

食べられログ イメージ

youkoseki.com | テキスト | 食べられログ
おもしろい!

放送大学 授業科目案内 自然言語処理('15)
京大の黒橋先生。

簡単のため(For simplicity)つぶやきまとめ - Togetterまとめ
ふむ。

考え直してほしい「2分の1成人式」--家族の多様化、被虐待児のケアに逆行する学校行事が大流行(学校リスク研究所 内田良) - 注目の記事
うむ。

プレスリリース作成・校正ツールを使ってブログ書いてみたら気分はキラキラ広報♪ : Blog @narumi
あは。

中国語の発音表記「ピンイン」の父、周氏が109歳に 写真4枚 国際ニュース:AFPBB News
生きているってことにびっくり。

文化系説教ジジイにモテない方法 - Togetter
BGよりもBSGでは?
文化系ジジイと文化系説教ジジイは区別したいよね。
ってどうでもいいか。

ペースメーカーへの携帯の影響は無視できる程小さい事を電車でちゃんとアナウンスしてほしい - Togetterまとめ
うむ。

妖怪ウォッチの新作「妖怪Pad」を買うべき理由とは?メダル170枚で遊んでみた! - 週アスPLUS
キリがないねえ。
Amazon.co.jp | 妖怪ウォッチ 妖怪Pad | おもちゃ 通販


Amazon.co.jp: flick! digital(フリックデジタル) 2015年2月号 Vol.40[雑誌] flick! Digitalシリーズ 電子書籍: flick!編集部: Kindleストア

スマホなど多数のデジタルデバイスを使いこなしているフリック!の読者の方なら、必需品となっているだろうモバイルバッテリー。このバッテリー、一歩間違えると、バッテリーや機器を壊したりする危険もあるし、本来の性能を発揮できないことも。そこで、本誌では、効率的に、トラブルを起こさず利用する方法をご紹介。同時の信頼できる性能のあるバッテリーもご紹介している。また、前号に続きIngressの記事も。今回は12月13日に開催されたDarsanaのレポートとともに、Ingressを作ったNiantic Labsのジョン・ハンケ氏に単独インタビュー、8p.を割いてさまざまな話を掲載している。新製品レポートをはじめ、好評連載も多数掲載。
iPad (初代) の Kindle で読んだ!
モバイルバッテリーの特集。モバイルバッテリー自体をどう保たせるかという話も知りたかったな、継ぎ足し充電とか。
あと、イングレスネタも。

たつをの ChangeLog
Powered by chalow